Не использовать значения свойств JNDI или протокол t3 WebLogic

Специфичные для WebLogic свойства имен, используемые при получении IntialContext в приложении, необходимо удалить или заменить. Инструмент миграции проверяет файлы Java, XML и файлы свойств и находит следующие значения свойств: weblogic.jndi.WLInitialContextFactory, t3://.* и t3s://*. Например, если в приложении заданы следующие свойства, инструмент отметит красный текст:

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", "weblogic.jndi.WLInitialContextFactory");
ht.put("java.naming.provider.url", "t3://localhost:7001");

InitialContext ctx = new InitialContext(ht);
}

Вручную удалите ненужные свойства:


import javax.naming.InitialContext;
...
void main( String[] args ) {
InitialContext ctx = new InitialContext();
}

Файлы XML

Инструмент отмечает не только файлы java, но и файлы xml, содержащие значения свойств WebLogic. В случае Liberty эти свойства необходимо удалить и использовать значения инициализации InitialContext по умолчанию.

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

В дополнение к файлам java и xml инструмент отмечает файлы свойств, содержащие значения свойств WebLogic. В случае Liberty необходимо удалить эти свойства.

WebSphere Application Server traditional

Файлы Java

При переносе приложения в WebSphere Application Server traditional отмечаются все те свойства WebLogic, которые были указаны выше. Для файлов Java в сканере исходного кода предусмотрено быстрое исправление, изменяющее значения свойств naming WebLogic на значения, допустимые для 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", "weblogic.jndi.WLInitialContextFactory");
ht.put("java.naming.provider.url", "t3s://localhost:7001");

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");

InitialContext ctx = new InitialContext(ht);
}

Примечание: в быстром исправлении используется порт начальной загрузки по умолчанию, 2809, для всех URL t3, включая URL SSL 't3s://'. Проверьте параметры сервера и убедитесь в том, что во всех URL задан правильный порт. За дополнительной информацией обратитесь к разделу Параметры номеров портов в WebSphere Application Server traditional.

Другой альтернативой при переносе приложения в WebSphere Application Server traditional является удаление свойств и использование пустого конструктора InitialContext().

Предупреждение: быстрое исправление корректирует только литералы. Если URL формируется с помощью переменных, его потребуется изменить вручную.

Пример с переменными до применения быстрого исправления:

void main( String[] args ) {
Hashtable ht = new Hashtable();

...

String port = "7001";
ht.put("java.naming.provider.url", "t3://localhost:" + port);

InitialContext ctx = new InitialContext(ht);
}

Пример с переменными после применения быстрого исправления:

void main( String[] args ) {
Hashtable ht = new Hashtable();

...

String port = "7001";
ht.put("java.naming.provider.url", "corbaloc:iiop:localhost:" + port);

InitialContext ctx = new InitialContext(ht);
}

Обратите внимание, что строковая переменная port не была изменена. Измените все такие переменные вручную.

Ниже приведен пример внесения аналогичных изменений в код XML.

Код XML до применения быстрого исправления:

<property name="java.naming.factory.initial" value="weblogic.jndi.WLInitialContextFactory"/>

<property name="java.naming.provider.url" value="t3://localhost:7001/"/>

Код XML после применения быстрого исправления:

<property name="java.naming.factory.initial" value="com.ibm.websphere.naming.WsnInitialContextFactory"/>

<property name="java.naming.provider.url" value="corbaloc:iiop:localhost:2809/"/>

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

Инструмент миграции проверяет файлы свойств, однако быстрое исправление не обрабатывает свойства провайдера и фабрики naming. В случае WebSphere Application Server traditional удалите эти свойства или измените их на значения свойств имен WebSphere.

См. также описание правила Использовать переносимые значения свойств JNDI.