Не использовать значения свойств JNDI, специфичные для JBoss

Специфичные для JBoss свойства имен, используемые при получении IntialContext в приложении, необходимо удалить или заменить. Инструмент миграции проверяет файлы свойств и файлы Java на наличие следующих значений свойств: org.jnp.interfaces.NamingContextFactory, jnp://.* и org.jboss.naming.*. Например, если в приложении заданы следующие свойства, инструмент отметит красный текст:

Liberty

Файлы Java

При переносе приложения в Liberty не следует задавать URL провайдера или фабрику начального контекста в свойствах, передаваемых в конструктор InitialContext. Используйте пустой конструктор, если не нужно настраивать никакие другие свойства имен.

Ниже приведен пример кода, который будет отмечен этим правилом при переносе приложения в 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();
}

Файлы свойств

Инструмент отмечает указанные выше свойства JBoss не только в файлах Java, но и в файлах свойств. В случае Liberty нужно удалить эти свойства из файла.

WebSphere Application Server traditional

Файлы Java

При переносе приложения в WebSphere Application Server traditional отмечаются все те свойства JBoss, которые были указаны выше. Для отмеченных файлов Java в сканере исходного кода предусмотрено быстрое исправление, изменяющее значения свойств naming 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);
}

Применение быстрого исправления Java для 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", "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.


Файлы свойств

Инструмент отмечает указанные выше свойства JBoss не только в файлах Java, но и в файлах свойств. В случае WebSphere Application Server traditional вручную удалите эти свойства из файла или измените их на значения свойств именования WebSphere.