不要使用 JBoss 專用 JNDI 內容值

在應用程式中取得 IntialContext 時,必須移除或取代所使用的 JBoss 專用命名內容。 移轉工具會掃描 Java 檔和內容檔來找出下列內容值:org.jnp.interfaces.NamingContextFactoryjnp://.*org.jboss.naming.*。 例如,如果應用程式指定下列內容,該工具會標示紅色文字:

Liberty

Java 檔

將應用程式移至 Liberty 時,請勿在傳遞至 InitialContext 建構子的內容中指定起始環境定義 Factory 或提供者 URL。 除非要設定其他命名內容,否則請使用空的建構子。

下例範例說明在移轉至 Liberty 時,此規則會標示的應用程式碼:


import java.util.Hashtable;
import javax.naming.InitialContext;
...
void main( String[] args ) {
Hashtable ht = new Hashtable();

ht.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
ht.put("java.naming.provider.url", "jnp://localhost:1099");
ht.put("java.naming.factory.url.pkgs", "org.jboss.naming");

InitialContext ctx = new InitialContext(ht);
}

對於 Liberty,請手動移除不必要的內容:


import javax.naming.InitialContext;
...
void main( String[] args ) {
InitialContext ctx = new InitialContext();
}

內容檔

除了會標示 java 檔之外,該工具還會標示先前所列之 JBoss 特定內容的內容檔。對於 Liberty,請從檔案中移除這些內容。

WebSphere Application Server Traditional

Java 檔

移轉至 WebSphere Application Server Traditional 時,將標示先前提及的相同 JBoss 內容。 自動修正將標記 Java 檔案,將 JBoss 命名屬性值變更為可在 WebSphere Application Server 傳統中運作的值:

下例範例說明在移轉至 WebSphere Application Server Traditional 時,此規則會標示的應用程式碼:


import java.util.Hashtable;
import javax.naming.InitialContext;
...
void main( String[] args ) {
Hashtable ht = new Hashtable();

ht.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
ht.put("java.naming.provider.url", "jnp://localhost:1099");
ht.put("java.naming.factory.url.pkgs", "org.jboss.naming");

InitialContext ctx = new InitialContext(ht);
}

使用先前顯示的範例,程式碼將會如圖所示進行轉換:


import java.util.Hashtable;;
import javax.naming.InitialContext;;

...

void main( String[] args ) {
Hashtable ht = new Hashtable();

ht.put("java.naming.factory.initial", "com.ibm.websphere.naming.WsnInitialContextFactory");
ht.put("java.naming.provider.url", "corbaloc:iiop:localhost:2809");
ht.put("java.naming.factory.url.pkgs", "com.ibm.ws.naming");

InitialContext ctx = new InitialContext(ht);
}

移至 WebSphere Application Server Traditional 的另外一個選擇是移除內容並使用空 InitialContext() 建構子。

當提供時,自動修正將只會在 org.jboss.naming 時,自動修正才會套用。 時,才會套用自動修正功能。 如果 org.jboss.naming 值後面有其他字串,規則會標記該值。 例如,此屬性將被標記: java.naming.factory.url.pkgs = org.jboss.naming:org.jnp.interfaces.


內容檔

除了會標示 java 檔之外,該工具還會標示先前所列之 JBoss 特定內容的內容檔。 對於 WebSphere Application Server Traditional,請從檔案中手動移除這些內容,或將這些內容變更為 WebSphere 命名內容值。