Nie używaj wartości właściwości JNDI specyficznych dla serwera JBoss

Konieczne jest usunięcie lub zastąpienie właściwości nazewnictwa specyficznych dla serwera JBoss, które są używane podczas uzyskiwania obiektu kontekstu początkowego w aplikacji. Narzędzie migracji skanuje pliki Java i pliki właściwości w poszukiwaniu wartości właściwości: org.jnp.interfaces.NamingContextFactory, jnp://.* i org.jboss.naming.*. Jeśli na przykład aplikacja określa następujące właściwości, narzędzie będzie oznaczać tekst wyróżniony kolorem czerwonym:

Liberty

Pliki Java

Podczas przenoszenia aplikacji do produktu Liberty nie należy podawać fabryki kontekstu początkowego ani adresu URL dostawcy w właściwościach przekazywanych do konstruktora InitialContext. Należy użyć pustego konstruktora, o ile nie są ustawiane inne właściwości nazewnictwa.

W poniższym przykładzie przedstawiono kod aplikacji, który zostanie oznaczony przez tę regułę podczas migracji do serwera 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);
}

W przypadku serwera Liberty należy ręcznie usunąć zbędne właściwości:


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

Pliki właściwości

Oprócz oznaczania plików Java narzędzie będzie również oznaczać pliki właściwości zawierające właściwości specyficzne dla serwera JBoss, które zostały wymienione wcześniej. W przypadku serwera Liberty należy usunąć te właściwości z pliku.

WebSphere Application Server traditional

Pliki Java

Podczas migracji do serwera WebSphere Application Server traditional oznaczane są te same właściwości serwera JBoss, które wymieniono wcześniej. W skanerze kodu źródłowego dostępna jest szybka poprawka dla oznaczonych plików Java zmieniająca wartości właściwości nazewnictwa serwera JBoss na wartości, które działają na serwerze WebSphere Application Server traditional:

Poniższy przykład przedstawia kod aplikacji oznaczany przez tę regułę podczas migrowania do serwera 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);
}

Korzystając z wcześniejszego przykładu, po uruchomieniu szybkiej poprawki Java dla serwera WebSphere Application Server traditional kod zostanie zmigrowany w następujący sposób:


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

Kolejną opcją, która jest dostępna przy przenoszeniu na serwer WebSphere Application Server traditional, jest usunięcie właściwości i użycie pustego konstruktora InitialContext().

Należy zauważyć, że szybka poprawka dostępna w skanerze kodu źródłowego zostanie zastosowana tylko wtedy, gdy wartość org.jboss.naming zostanie podana bez łańcucha końcowego, jak to pokazano w powyższym przykładzie. Jeśli po wartości org.jboss.naming wystąpi dodatkowy łańcuch, reguła będzie oznaczać tę wartość, ale nie zastosuje szybkiej poprawki. Na przykład następująca właściwość zostanie oznaczona, ale nie zostanie zmieniona: java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces.


Pliki właściwości

Oprócz oznaczania plików java narzędzie będzie oznaczać pliki właściwości specyficzne dla serwera JBoss wymienione wcześniej. W przypadku serwera WebSphere Application Server traditional należy ręcznie usunąć te właściwości z pliku lub zmienić je na wartości właściwości nazewnictwa produktu WebSphere.