请勿使用特定于 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 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 命名属性值。