Не использовать значения свойств 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, которое изменит значения свойства 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.


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

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