2011-03-30 90 views
6

我試圖從獨立的遠程客戶端連接到GlassFish 3的JMS服務。但是我得到一個java.lang.ClassNotFoundException:com.sun.messaging.jms.ra.ResourceAdapter。有想法該怎麼解決這個嗎?將遠程JMS客戶端連接到GlassFish 3

這裏是我的設置至今:

  • Glassfish的3 JMS服務在本地模式(我假設埋入式模式將不會在這種情況下工作,因爲它繞過網絡堆棧)

  • JNDI屬性被指定如下:

    java.naming.factory.initial的= com.sun.enterprise.naming.SerialInitContextFactory java.naming.factory.url.pkgs = com.sun.enterprise.naming java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl

  • GF-客戶module.jar(在GLASSFISH_HOME /模塊)加入到單獨的應用程序的類路徑。還嘗試添加模塊目錄中存在的其他jar(例如jms-core.jar),但仍然得到相同的ClassNotFoundException。

任何幫助將不勝感激。

回答

2

好的。我找到了解決方案。有關詳細信息,請參閱here,但簡短的答案是我需要向類路徑添加兩個jar:imqjmsra.jar和imqbroker.jar。這些可以在名爲imqjmsra.rar的rar中找到,它可以在glassfish的mq目錄下找到。我不得不從這個rar中提取兩個罐子!

1

這是客戶端罐子GlassFish的3完整的列表:

auto-depends.jar 
deployment-common.jar 
glassfish-corba-internal-api.jar  
internal-api.jar 
management-api.jar 
bean-validator.jar 
dol.jar 
glassfish-corba-newtimer.jar   
javax.ejb.jar 
orb-connector.jar 
common-util.jar 
ejb-container.jar 
glassfish-corba-omgapi.jar  
javax.jms.jar 
orb-iiop.jar 
config-api.jar 
ejb.security.jar 
glassfish-corba-orb.jar 
javax.resource.jar 
security.jar 
config-types.jar 
glassfish-api.jar 
glassfish-corba-orbgeneric.jar  
javax.servlet.jar 
ssl-impl.jar 
config.jar 
glassfish-corba-asm.jar 
glassfish-naming.jar 
javax.transaction.jar 
transaction-internal-api.jar 
connectors-internal-api.jar  
glassfish-corba-codegen.jar  
gmbal.jar 
jta.jar 
container-common.jar 
glassfish-corba-csiv2-idl.jar  
hk2-core.jar 
kernel.jar 
3

而不是使用所有你可能需要的(如GF-客戶module.jar,imqjmsra個人Glassfish的jar文件的。 jar和imqbroker.jar),首選的方法是使用gf-client.jar文件。它可以在$ GLASSFISH_HOME/lib中找到。

有更多的信息在http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB。該文檔涉及在獨立客戶端中使用EJB,但解決方案與使用JMS相同。

0

正如伊萬Krizsan的筆記爲EJB認證提及,並根據Glassfish的版本,這已經足夠了:

  • 的GlassFish 3(和GlassFish 4也一樣,我只是測試它) :$ GLASSFISH_HOME/lib目錄/ GF-client.jar中
  • GlassFish的2:$ GLASSFISH_HOME/lib中/的appserv-rt.jar中和$ APS_HOME/lib目錄/ javaee.jar