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:
java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactoryjava.naming.provider.url=corbaloc:iiop:localhost:2809Narzę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.
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.