2010-12-07 6 views
1

habe ich einen kleinen Standalone-Client:Wie stelle ich vom Websphere-Server eine Verbindung mit Weblogic JMS her?

weblogic.jndi.WLInitialContextFactory 
t3://weblogic-server:7001 

jms.xyz.jmsXyzCf 
jms/xyz/jmsXyzLogQueue 

Und es funktioniert einwandfrei.

Wenn ich versuche, den gleichen Code von meinem Websphere-Server auszuführen, bekomme ich NullPointerException. Ich verstehe dies geschieht, weil ich nicht weblogic Klassen im Classpath haben:

Caused by: java.lang.NullPointerException 
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:235) 
at javax.naming.InitialContext.initializeDefaultInitCtx(InitialContext.java:327) 
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:357) 
at javax.naming.InitialContext.internalInit(InitialContext.java:295) 
at javax.naming.InitialContext.(InitialContext.java:212) 

Wenn ich versuche, sie addieren ich einige „Sicherheit“ Fehler

Current Java 2 Security policy reported a potential violation of Java 2 Security Permission. 

java.security.AccessControlException: Access denied (java.lang.RuntimePermission exitVM.0) 
at java.security.AccessController.checkPermission(AccessController.java:108) 
at java.lang.SecurityManager.checkPermission(SecurityManager.java:533) 
at com.ibm.ws.security.core.SecurityManager.checkPermission(SecurityManager.java:211) 
at java.lang.SecurityManager.checkExit(SecurityManager.java:745) 
at java.lang.Runtime.exit(Runtime.java:100) 
at java.lang.System.exit(System.java:297) 

Als letzte Ressource, habe ich versucht zu connect using websphere eigenen Kontext Factory: com.ibm.websphere.naming.WsnInitialContextFactory aber natürlich scheitert es, weil es t3 nicht versteht.

Frage

Wie kann ich zu einem WebLogic JMS von Websphere verbinden?

+0

Der Grund, warum Sie einen Sicherheitsberechtigungsfehler erhalten, liegt daran, dass etwas versucht, eine System.exit aufzurufen. Schauen Sie sich die Stack-Trace an. exitVM: Dieses Ziel gewährt die Berechtigung zum Anhalten der Java-VM. Durch das Erteilen dieser Berechtigung kann bösartiger Code eine Denial-of-Service-Attacke auslösen, indem die VM automatisch zum Stoppen gezwungen wird. – Manglu

+0

Ich sehe nicht, wie das (System.exit) von der Stapelverfolgung ausgelöst wird, die Sie hier gepostet haben. Es macht für mich Sinn, dass die J2-Sicherheitsrichtlinie den Zugriff verhindert, da andernfalls der Runtime-WAS-Server heruntergefahren würde, an dem Sie sicherlich nicht interessiert wären. Gibt es noch andere Dinge in den Protokollen (dieser Exit könnte etwas damit zu tun haben) Andernfalls wird eine andere App als Beispiel auf demselben Server gehostet. – Manglu

Antwort

0

WebSphere ist nicht gerade für seine Benutzerfreundlichkeit bei der Ausführung von Systemfunktionen (wie JNDI) unter Verwendung von Implementierungen von Drittanbietern bekannt. Am Ende müssen Sie die WebSphere-Klassen (einschließlich der WebSphere-Implementierung von InitialContextFactory) verwenden.

Wenn Sie unter WebSphere ausführen, müssen Sie die InitialContextFactory-Implementierung nicht explizit angeben (und sollte nicht); WebSphere kann (und sollte) es selbst abschließen.

Wenn Sie dies richtig verstanden haben, versuchen Sie, sich mit WebLogic JMS Administered Objects innerhalb eines WebSphere-Serverprozesses zu verbinden. Die einzige Möglichkeit, dies zu tun, wäre, die Implementierungsklassen von WebLogic JMS zu erhalten und sie als JMS-Provider hinzuzufügen und dann mit JNDI nachzuschlagen. Ich werde jedoch gerne korrigiert bleiben.