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);