1.配置JBOSS服務(wù)器
2.new EJB project創(chuàng)建項(xiàng)目
3.創(chuàng)建EJB—》new interface,然后new class實(shí)現(xiàn)類,xxxBean命名。
4.注解配置EJB:xxxBean類型:@stateful或@stateless和@remote或@local
5.部署EJB。查看JBOSS\SERVER\DEFAULT\DEPLOY里面部署的EJB.
6.開發(fā)EJB客戶端:
(1)new java project
(2)通過接口調(diào)用,將接口--》導(dǎo)出jar包到客戶端目錄下(jar包名隨便起,然后添加為項(xiàng)目liberies時(shí)點(diǎn)add jar。使用該接口時(shí)再導(dǎo)入該包)。
(3)將接口jar包添加到項(xiàng)目的類路徑下。將JBOSS\client下的jar包也添加到客戶端項(xiàng)目里面。(可以先在myeclipse里定義一個(gè)庫—>java—>build path—>user libery)。
(4)new class--》初始化上下文(JNDI里面的initial context)—》context.lookup(“EJB名稱/remote”)--》調(diào)用方法。
(5)在客戶端配置JNDI,告訴context:EJB在哪里。在類路徑下面(src)目錄下添加jndi.properties。
java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url = localhost
(6)運(yùn)行客戶端。
我實(shí)際運(yùn)行時(shí)用jndi.properties文件不能運(yùn)行成功,提示Cannot instantiate class: org.jnp.interfaces.NamingContextFactory,網(wǎng)上的解決方法是添加jbossall-client.jar但是我添了沒效果。于是換成在java文件里面設(shè)置,成功。懷疑是我的jndi.properties文件寫法有問題,有待驗(yàn)證。
Hashtable env=new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL,"localhost:1099");
env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
InitialContext cxt=new InitialContext(env);