2013-02-01 62 views
0

我需要從JNDI(配置的SIB)中查找一個websphere 7隊列。首先我寫了一個訪問遠程websphere服務器的客戶端程序。我添加了com.ibm.ws.admin.client,com.ibm.ws.runtime,com.ibm.ws.sib.client.thin.jms和com.ibm.ws.webservices.thinclient jar文件。從JNDI查找websphere隊列

代碼如下。

Hashtable<String, Object> env = new Hashtable<String, Object>(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, 
        "com.ibm.websphere.naming.WsnInitialContextFactory"); 
env.put(Context.PROVIDER_URL, "iiop://localhost:2809"); 

由於我以遠程客戶端的身份訪問它,因此無法正常工作。因此我加了這個,

env.put("java.naming.corba.orb",org.omg.CORBA.ORB.init((String[])null,null)); 

這個工作正常。然後我刪除了上面的行並將目標JDK移動到IBM JDK。在這種情況下,它也沒有任何問題。

當我需要訪問服務器程序中的上述隊列時,會遇到實際問題。這在單獨的JVM上運行。當我嘗試訪問遠程JNDI隊列時,它給了我一個類轉換異常。我相信它是因爲它加載默認的sun ORB實現而不是IBM。我添加了com.ibm.ws.orb jar,但仍然沒有運氣。它加載Sun ORB。因此它給了類拋出異常。

像上面一樣,我沒有加載org.omg.CORBA.ORB的工具。有什麼辦法可以運行嗎?我錯過了什麼嗎?任何來自Websphere 8.5的反饋也是受歡迎的。

注意:這不是Websphere MQ。我指的是Websphere應用程序服務器隊列。

回答

0

嗯......棘手。您也許可以嘗試打包之前與EAR文件一起工作的客戶機jar文件,並將類加載器策略更改爲PARENT_LAST。

+0

顯然我需要知道我是否在上面正確地執行操作。我相信應該有其他方法來實現這一點。 – Dilshan