服务器 JBoss 4.2
定义一个接口:
package com.ejb.iface; public interface Helloworld { public String sayHello(String name); }
实现该接口:定义一个Enterprise JavaBean
注意:命名规范一般Bean结尾
package com.ejb.bean; import javax.ejb.Remote; import javax.ejb.Stateless; import com.ejb.iface.Helloworld; @Stateless @Remote(Helloworld.class) public class HelloworldBean implements Helloworld { @Override public String sayHello(String name) { return "你好..." + name; } }
EJB 客户端调用
注意:需要 jbossall-client.jar jnp-client.jar log4j.jar 三个jar
package com.client; import javax.naming.InitialContext; import com.ejb.iface.Helloworld; public class HelloworldClient { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { InitialContext ctx = new InitialContext(); Helloworld helloworld = (Helloworld) ctx.lookup("HelloworldBean/remote"); System.out.println(helloworld.sayHello("Spring咖啡...")); } }
另外客户端需要一个jndi.properties文件
InitialContext ctx = new InitialContext(); 执行该代码的时候客户端会在当前路径下查找该属性文件
其内容如下:(具体意思不是很懂。。。)
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=localhost:1099 java.naming.factory.url.paks=org.jboss.naming:org.jnp.interfaces
注意属性文件的值后面不能有空格否则会报出一个 [org.jnp.interfaces.NamingContextFactory(空格) ]
不能找到的异常
将工程部署到Jboss中的方式如下:
具体含义不解释
<?xml version="1.0" encoding="UTF-8"?> <project basedir="./classes" default="ejbjar" name="ejb"> <property name="jboss.deploy" location="D:/IDE/jboss-4.2.3.GA/server/default/deploy"/> <target name="ejbjar" description="创建EJB发布包"> <jar destfile="./Helloworld.jar"> <fileset dir="."> <include name="**/*.class"/> </fileset> <metainf dir="./META-INF"> <include name="*.xml"/> </metainf> </jar> </target> <target name="deploy"> <copy file="./Helloworld.jar" todir="${jboss.deploy}"/> </target> </project>