Używaj wartości domyślnych właściwości JNDI klasy InitialContext

W razie migrowania do serwera Liberty należy używać wartości domyślnych właściwości JNDI java.naming.factory.initial i java.naming.provider.url. W przypadku tych właściwości następujące wartości serwera WebSphere Application Server traditional są niepoprawne:

Narzędzie do migracji przeszukuje pliki Java i pliki właściwości, znajdując właściwości, o których wspomniano wcześniej.

W plikach jndi.properties klucze właściwości java.naming.factory.initial i java.naming.provider.url są oznaczane niezależnie od wartości. Jeśli reguła pliku właściwości wykrywa plik jndi.properties, należy sprawdzić właściwości znajdujące się w tym pliku. Należy usunąć właściwości java.naming.factory.initial i java.naming.provider.url albo usunąć plik, jeśli żadna z tych właściwości nie jest potrzebna.

W poniższym przykładzie przedstawiono kod aplikacji, który zostanie oznaczony przez tę regułę:


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

Gdy jest używany konstruktor InitialContext(Hashtable), należy usunąć te dwie właściwości. Jeśli nie są używane żadne inne właściwości, można użyć konstruktora domyślnego.

Poniższy przykład ilustruje prawidłowe użycie kodu przedstawionego w poprzednim przykładzie:


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

Gdy jest używany konstruktor InitialContext(Hashtable), należy usunąć te dwie właściwości. Jeśli nie są używane żadne inne właściwości, można użyć konstruktora domyślnego.

Ta reguła ma zautomatyzowaną poprawkę usuwającą te dwie właściwości. Skopiuj konfigurację niestandardową do pliku budowania aplikacji, aby ją włączyć.

Reguła będzie również oznaczała wystąpienie com.ibm.websphere.naming.WsnInitialContextFactory w dowolnym miejscu kodu Java. Usuń ten łańcuch i upewnij się, że nie jest on używany jako część inicjowania klasy InitialContext.