Ne pas utiliser de valeurs de propriété JNDI spécifiques à JBoss

Vous devez retirer ou remplacer les propriétés de désignation spécifiques à JBoss utilisées lors de l'obtention de InitialContext dans votre application. L'outil de migration recherche les valeurs de propriété org.jnp.interfaces.NamingContextFactory, jnp://.* et org.jboss.naming.* dans les fichiers Java et les fichiers de propriétés. Par exemple, si une application spécifie les propriétés ci-après, l'outil marque le texte en rouge :

Liberty

Fichiers Java

Lorsque vous transférez votre application vers Liberty, ne spécifiez pas de fabrique de contexte initial ni d'URL de fournisseur dans les propriétés transmises au constructeur InitialContext. Utilisez un constructeur vide sauf si d'autres propriétés de désignation sont définies.

L'exemple ci-dessous illustre un code d'application marqué par cette règle lors de la migration vers 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);
}

Pour Liberty, retirez manuellement les propriétés inutiles :


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

Fichiers de propriétés

En plus de marquer les fichiers Java, l'outil marque les fichiers de propriétés pour les propriétés spécifiques à JBoss listées précédemment. Pour Liberty, retirez ces propriétés du fichier.

WebSphere Application Server Traditional

Fichiers Java

Lors de la migration vers le serveur WebSphere Application Server Traditional, les propriétés JBoss mentionnées précédemment sont marquées. Le scanner de source propose un correctif rapide pour les fichiers Java marqués qui remplace les valeurs de propriété de désignation JBoss par celles qui fonctionnent dans WebSphere Application Server Traditional :

L'exemple ci-dessous illustre un code d'application marqué par cette règle lors de la migration vers 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);
}

Dans l'exemple précédent, après l'exécution du correctif rapide Java pour le serveur WebSphere Application Server Traditional, le code est migré, comme suit :


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

Une autre option lors du transfert vers WebSphere Application Server Traditional consiste à retirer les propriétés et à utiliser le constructeur vide InitialContext().

Notez que le correctif rapide disponible dans le scanner de source n'est appliqué que si la valeur d'org.jboss.naming est spécifiée sans chaîne de fin, conformément à l'exemple précédent. Si la valeur org.jboss.naming est suivie d'une chaîne supplémentaire, la règle marque la valeur mais n'applique pas le correctif rapide. Par exemple, la propriété suivante sera marquée, mais pas modifiée : java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces.


Fichiers de propriétés

En plus de marquer les fichiers Java, l'outil marque les fichiers de propriétés pour les propriétés spécifiques à JBoss listées précédemment. Pour WebSphere Application Server Traditional, retirez manuellement ces propriétés du fichier ou associez-les à des valeurs de propriété de désignation WebSphere.