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 WebSphere Application Server traditional, te same właściwości JBoss wspomniane wcześniej zostaną oznaczone. Zautomatyzowana poprawka oznaczy pliki Java, które zmieniają wartości właściwości JBoss do wartości, które działają w 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 przykładu pokazanego wcześniej, kod zostanie zmigrowany w pokazany 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().

Po podaniu automatyczna poprawka zostanie zastosowana tylko wtedy, gdy parametr org.jboss.naming jest określony bez końcowego ciągu znaków jak pokazano w poprzednim przykładzie. Jeśli po org.jboss.naming znajduje się dodatkowy ciąg znaków, reguła oznaczy tę wartość. Na przykład ta właściwość zostanie oznaczona: 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.