您必须移除或替换在获取应用程序中 IntialContext 时使用的特定于 JBoss 的命名属性。
迁移工具扫描 Java 和属性文件以查找属性值:org.jnp.interfaces.NamingContextFactory、jnp://.* 和 org.jboss.naming.*。
例如,如果应用程序指定以下属性,那么工具将标记红色文本:
将应用程序移到 Liberty 时,请勿在传递给 InitialContext 构造函数的属性中指定初始上下文工厂或提供程序 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 命名属性值。