1.配置JBOSS服務器
2.new EJB project創建項目
3.創建EJB—》new interface,然后new class實現類,xxxBean命名。
4.注解配置EJB:xxxBean類型:@stateful或@stateless和@remote或@local
5.部署EJB。查看JBOSS\SERVER\DEFAULT\DEPLOY里面部署的EJB.
6.開發EJB客戶端:
(1)new java project
(2)通過接口調用,將接口--》導出jar包到客戶端目錄下(jar包名隨便起,然后添加為項目liberies時點add jar。使用該接口時再導入該包)。
(3)將接口jar包添加到項目的類路徑下。將JBOSS\client下的jar包也添加到客戶端項目里面。(可以先在myeclipse里定義一個庫—>java—>build path—>user libery)。
(4)new class--》初始化上下文(JNDI里面的initial context)—》context.lookup(“EJB名稱/remote”)--》調用方法。
(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)運行客戶端。
我實際運行時用jndi.properties文件不能運行成功,提示Cannot instantiate class: org.jnp.interfaces.NamingContextFactory,網上的解決方法是添加jbossall-client.jar但是我添了沒效果。于是換成在java文件里面設置,成功。懷疑是我的jndi.properties文件寫法有問題,有待驗證。
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);