Не использовать значения свойств 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 будет предоставлено автоматическое исправление которое изменяет значения свойств именования WebLogic на те, которые работают в традиционном 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", "weblogic.jndi.WLInitialContextFactory");
ht.put("java.naming.provider.url", "t3s://localhost:7001");

InitialContext ctx = new InitialContext(ht);
}

Используя тот же пример, что был показан ранее, после выполнения автоматического исправления для 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:" + порт);

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/"/>

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

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

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