请勿使用特定于 JBoss 的 JNDI 属性值

您必须移除或替换在获取应用程序中 IntialContext 时使用的特定于 JBoss 的命名属性。 迁移工具扫描 Java 和属性文件以查找属性值:org.jnp.interfaces.NamingContextFactoryjnp://.*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 传统文件中的值:

以下示例说明了在迁移到 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 命名属性值。