Как подключиться к Weblogic JMS с сервера Websphere?

Я создал небольшой автономный клиент, используя:

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

jms.xyz.jmsXyzCf
jms/xyz/jmsXyzLogQueue

И работает безупречно.

При попытке запустить тот же код с моего сервера websphere я получаю NullPointerException. Я понимаю, что это происходит, потому что у меня нет классов weblogic в пути к классам:

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)

Когда я пытаюсь добавить их, я получаю некоторые ошибки «Безопасности».

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)

В качестве последнего ресурса я попытался подключиться, используя собственную фабрику контекстов websphere: com.ibm.websphere.naming.WsnInitialContextFactory, но, конечно, это не удалось, потому что он не понимает t3.

Вопрос

Как я могу подключиться к weblogic JMS из Websphere?


person John Smith    schedule 07.12.2010    source источник
comment
Причина, по которой вы получаете ошибку разрешения безопасности, заключается в том, что что-то пытается вызвать System.exit. Посмотрите на трассировку стека. exitVM: эта цель предоставляет разрешение на остановку виртуальной машины Java. Предоставление этого разрешения может позволить вредоносному коду организовать атаку типа «отказ в обслуживании», автоматически заставив виртуальную машину остановиться.   -  person Manglu    schedule 10.12.2010
comment
Я не понимаю, как это (System.exit) запускается из трассировки стека, которую вы разместили здесь. Мне кажется логичным, что политика безопасности J2 запрещает доступ, так как в противном случае ваш сервер WAS во время выполнения был бы закрыт, что вас, безусловно, не интересовало бы. Есть ли что-то еще в журналах (этот выход может быть связан с чем-то? в противном случае, например, другое приложение, размещенное на том же сервере.   -  person Manglu    schedule 10.12.2010


Ответы (1)


WebSphere не совсем известен своей дружественностью к запуску функций системного уровня (таких как JNDI) с использованием сторонних реализаций. В конце вам придется использовать классы WebSphere (включая реализацию InitialContextFactory WebSphere).

При работе в среде WebSphere вам не нужно (и фактически не следует) явно указывать реализацию InitialContextFactory; WebSphere может (и должен) сделать это сам.

Если я правильно понимаю, вы пытаетесь подключиться к администрируемым объектам WebLogic JMS из серверного процесса WebSphere. Единственный способ, который я могу придумать, - это получить классы реализации WebLogic JMS и добавить его в качестве поставщика JMS, а затем использовать JNDI для его поиска. Я буду счастлив исправиться, хотя.

person Isaac    schedule 13.09.2012