在應用程式中取得 IntialContext 時,必須移除或取代所使用的 JBoss 專用命名內容。
移轉工具會掃描 Java 檔和內容檔來找出下列內容值:org.jnp.interfaces.NamingContextFactory、jnp://.* 和 org.jboss.naming.*。
例如,如果應用程式指定下列內容,該工具會標示紅色文字:
將應用程式移至 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 時,將標示先前提及的相同 JBoss 內容。 在原始檔掃描器中,適用於所標示 Java 檔的快速修正程式會將 JBoss 命名內容值,變更為可在 WebSphere Application Server Traditional 中運作的內容值:
下例範例說明在移轉至 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); } |
使用先前所示範例,在執行 WebSphere Application Server Traditional 的 Java 快速修正程式之後,將會移轉程式碼,如下所示:
|
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 命名內容值。