您必须移除或替换在获取应用程序中 IntialContext 时使用的特定于 JBoss 的命名属性。
迁移工具扫描 Java 和属性文件以查找属性值:org.jnp.interfaces.NamingContextFactory、jnp://.* 和 org.jboss.naming.*。
例如,如果应用程序指定以下属性,那么工具将标记红色文本:
- java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
- java.naming.provider.url=jnp://localhost:1099
- java.naming.factory.url.pkgs=org.jboss.naming
Liberty
Java 文件
将应用程序移到 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
Java 文件
在迁移至 WebSphere Application Server Traditional 时,将标记前述相同的 JBoss 属性。
自动修复将标记 Java 文件,将 JBoss 命名属性值改为 WebSphere Application Server 传统文件中的值:
- java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory
- java.naming.provider.url=corbaloc:iiop:localhost:2809
- java.naming.factory.url.pkgs=com.ibm.ws.naming
以下示例说明了在迁移到 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 命名属性值。