Non utilizzare valori della proprietà JNDI specifici di JBoss

È necessario rimuovere o sostituire le proprietà di denominazione specifiche di JBoss utilizzate quando si acquisisce IntialContext nell'applicazione. Lo strumento di migrazione analizza i file Java e delle proprietà per ricercare i valori della proprietà org.jnp.interfaces.NamingContextFactory, jnp://.* e org.jboss.naming.*. Ad esempio, se un'applicazione specifica le seguenti proprietà, lo strumento dovrebbe contrassegnare il testo rosso:

Liberty

File Java

Durante lo spostamento dell'applicazione in Liberty, non specificare una factory di contesto iniziale o un URL del provider nelle proprietà passate al costruttore InitialContext. Utilizzare un costruttore vuoto a meno che non vengano impostate altre proprietà di denominazione.

L'esempio riportato di seguito illustra il codice dell'applicazione che verrà contrassegnato da questa regola durante la migrazione verso 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);
}

In Liberty, rimuovere manualmente le proprietà non necessarie:


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

File delle proprietà

Oltre a contrassegnare i file java, lo strumento contrassegna i file delle proprietà per le proprietà specifiche di JBoss elencate in precedenza. Per Liberty, rimuovere tali proprietà dal file.

WebSphere Application Server tradizionale

File Java

Durante la migrazione a WebSphere Application Server tradizionale, le stesse proprietà JBoss menzionate in precedenza verranno contrassegnate. Una correzione automatica segnalerà i file Java che modificano i valori delle proprietà di JBoss ai valori delle proprietà di denominazione che funzionano in WebSphere Application Server tradizionale:

L'esempio riportato di seguito illustra il codice dell'applicazione che verrà contrassegnato da questa regola durante la migrazione verso WebSphere Application Server tradizionale:


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

Utilizzando l'esempio mostrato in precedenza, il codice verrà migrato come mostrato:


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

Un'altra opzione quando si passa a WebSphere Application Server tradizionale consiste nella rimozione delle proprietà e nell'utilizzo del costruttore InitialContext() vuoto.

Se fornita, la correzione automatica sarà applicata solo quando l'elemento org.jboss.naming è specificato senza stringa finale come mostrato nell'esempio precedente. Se il valore org.jboss.naming è seguito da una stringa aggiuntiva, la regola segnalerà il valore. Ad esempio, questa proprietà verrà contrassegnata: java.naming.factory.url.pkgs = org.jboss.naming:org.jnp.interfaces.


File delle proprietà

Oltre a contrassegnare i file java, lo strumento contrassegna i file delle proprietà per le proprietà specifiche di JBoss elencate in precedenza. Per WebSphere Application Server tradizionale, rimuovere manualmente tali proprietà dal file o modificarle con i valori delle proprietà di denominazione WebSphere.