Bonjour,
J'ai une application client/serveur et j'utilise des intercepteurs portables avec VisiBroker 5.2 pour véhiculer des informations contextuelles entre le serveur et le client. Il s'agit de ClientInterceptor côté client et ServerInterceptor côté serveur ainsi que leurs initialisateurs respectifs. Dans le cas nominal (client/serveur classique) tout se passe correctement.
Mon application peut fonctionner en mode multi-JVMs (plusieurs instances de l'application qui peuvent être hétérogène, une des JVMs peut être à la fois client et serveur). Dans chaque JVM, j'ai une seule instance d'ORB. Dans le cas d'une JVM client et serveur, je suis obligé d'initialiser les deux intercepteurs. Chaque JVM s'enregistre auprès d'un service de noms et consulte ce service découvrir les JVMs voisines.
C'est justement cette découverte des autres JVMs qui me cause problème. C'est un thread qui s'exécute à interval régulier et malheureusement plante à l'appel suivant:
ORB orb = ORBSingleton.getInstance().getORB();
org.omg.CORBA.Object rootAsObj = orb.resolve_initial_references("NameService");
NamingContext = nctx = NamingContextHelper.narrow(rootAsObj);
ArrayList jvmNameComponents = new ArrayList();
BindingListHolder blh = new BindingListHolder();
BindingIteratorHolder bih = new BindingIteratorHolder();
nctx.list(20, blh, bih);
La stacktrace est la suivante:
java.lang.NullPointerException
at org.omg.CORBA.OctetSequenceHelper.write(OctetSequenceHelper.java:31)
at com.inprise.vbroker.IOP.ServiceContextHelper.write(ServiceContextHelper.java:35)
at com.inprise.vbroker.IOP.ServiceContextListHelper.write(ServiceContextListHelper.java:38)
at com.inprise.vbroker.GIOP.RequestMessage.init(RequestMessage.java:95)
at com.inprise.vbroker.GIOP.RequestMessage.<init>(RequestMessage.java:42)
at com.inprise.vbroker.GIOP.ProtocolConnector.createRequestMessage(ProtocolConnector.java:497)
at com.inprise.vbroker.GIOP.ProtocolConnector.request(ProtocolConnector.java:348)
at com.inprise.vbroker.interceptor.ChainClientInterceptorAdapter.request(ChainClientInterceptorAdapter.java:289)
at com.inprise.vbroker.orb.DelegateImpl.request(DelegateImpl.java:629)
at org.omg.CORBA.portable.ObjectImpl._request(ObjectImpl.java:431)
at org.omg.CosNaming._NamingContextStub.list(ServerConnection.java:565)
at com.axalto.simergy.api.ServerConnection.pollJvm(ServerConnection.java:358)
at java.util.TimerThread.mainLoop(Timer.java:432)
at java.util.TimerThread.run(Timer.java:382)
Quelqu'un aurait-il une idée de l'origine du problème?
Merci d'avance.
Félicien[/i]
Partager