1、public interface HelloServiceLocal import javax.ejb.Stateless;/* * Session Bean implementation class HelloService */Statelesspublic class HelloService implements HelloServiceRemote, HelloServiceLocal /* * Default constructor. public HelloService() / TODO Auto-generated constructor stub 加入我们的一个测试方法ge
2、tHello()和addNum() public String getHello(String name);public Integer addNum(Integer x,Integer y); public String getHello(String name); public String getHello(String name) return Hello + name; public Integer addNum(Integer x,Integer y) return x + y;1.3 部署服务端源代码将项目导出成JAR包,然后拷贝到JBOSS部署目录下点browser,选中导出的
3、目的地-JBOSS的部署目录也可以导出到桌面上,然后COPY入JBOSS的部署目录总之,结果是启动JBOSS可以在ECLIPSE里启动,也可以直接到JBOSS /bin 目录下启动JBOSS可以看到下面的启动日志10:38:41,781 INFO JBossASKernel Added bean(jboss.j2ee:jar=helloEJBServer.jar,name=HelloService,service=EJB3) to KernelDeployment of: helloEJBServer.jar41,796 INFO EJB3EndpointDeployer Deploy Abs
4、tractBeanMetaData18ddef7name=jboss.j2ee:jar=helloEJBServer.jar,name=HelloService,service=EJB3_endpoint bean=org.jboss.ejb3.endpoint.deployers.impl.EndpointImpl properties=container constructor=null autowireCandidate=true42,234 INFO SessionSpecContainer Starting jboss.j2ee:jar=helloEJBServer.jar,name
5、=HelloService,service=EJB342,250 INFO EJBContainer STARTED EJB: .sample.HelloService ejbName: HelloService42,468 INFO JndiSessionRegistrarBase Binding the following Entries in Global JNDI: HelloService/remote - EJB3.x Default Remote Business Interface HelloService/remote-.sample.HelloServiceRemote -
6、 EJB3.x Remote Business Interface HelloService/local - EJB3.x Default Local Business Interface HelloService/local-.sample.HelloServiceLocal - EJB3.x Local Business Interface检查部署情况,访问http:/localhost:8080,点击进入JMX Console再点击进入service=JNDIView在JNDI VIEW界面下,在list行,点击invoke按钮可以在列出bean里面,在Global JNDI Names
7、pace下,看到部署上去的HelloService bean和它的remote接口和local接口2.建立/部署EJB CLIENT(客户端)项目2.1 建立EJB CLIENT项目建议一个普通的WAR包项目 (ECLIPSE下的Dynamic Web Project项目)2.2 导入JBOSS EJB客户端库入项目buildpath到JBOSS工作目录下的client子目录将里面的所有文件都拷贝入WAR包的WEB-INF/lib目录下2.3 将服务端项目里的接口文件拷入客户端项目(当然更正规的做法是做成jar包放入buildpath)注意:1.只拷接口,不要拷实现类2. 不仅接口名不能变化,
8、包名也不能变化,要保持一致2.4 建立EJB APPLICATION客户端测试代码(可以直接命令行执行的客户端)package .sample.testclient;import java.util.Hashtable;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import .sample.HelloServiceRemote;public class TestAppClient * param args * throws NamingEx
9、ception public static void main(String args) Hashtable properties = new Hashtable(); / 配置驱动程序, JBoss 特定的 properties.put(Context.INITIAL_CONTEXT_FACTORY,org.jnp.interfaces.NamingContextFactory); / 配置 jndi URL,这个 URL 格式没有规定,各个服务器各自一套 properties.put(Context.PROVIDER_URL, jnp:/localhost try InitialConte
10、xt ctx = new InitialContext(properties);HelloServiceRemote dao = (HelloServiceRemote) ctx.lookup(HelloService/remote System.out.println(dao.getHello(mac2); System.out.println(3 + 13 = +dao.addNum(3, 13); ctx.close(); catch (NamingException e) / TODO Auto-generated catch block e.printStackTrace(); 执行
11、这个程序(Run as Java Application)Hello mac23 + 13 = 162.5 建立EJB WEB客户端测试代码(可以网页客户端)在WebContent下建立jsp文件% page import=java.util.*,javax.naming.Context,javax.naming.InitialContext,javax.naming.NamingException,.sample.HelloServiceRemote %!DOCTYPE html PUBLIC -/W3C/DTD HTML 4.01 Transitional/EN http:/www.w3.
12、org/TR/html4/loose.dtdhtmlheadmeta http-equiv=Content-Type content=titleInsert title here/headbody% Hashtable properties = new Hashtable(); properties.put(Context.INITIAL_CONTEXT_FACTORY, properties.put(Context.PROVIDER_URL, /127.0.0.1 try InitialContext ctx = new InitialContext(properties); HelloSe
13、rviceRemote dao = (HelloServiceRemote) ctx.lookup( out.println(dao.getHello()+br /hr / out.println( ctx.close(); catch (NamingException e) e.printStackTrace(); %/body/html将项目加载到TOMCAT下 由于服务端项目是加载到JBOSS下,因此等于一台机器同时起两个应用服务器,有可能出现8080端口冲突,需要将TOMCAT的端口改成别的,避免和JBOSS的8080冲突测试,访问http:8190/helloEJBClient/he
14、llo.jsp2.6 建立EJB WEB MVC客户端测试代码(以简单的SERVLET代替)本来想做个struts2的例子,但考虑要增加很多步骤,与本文力求简单初级使用的宗旨不符.所以这里以基础的servlet代替(尽管现在已经很少有人用servlet了)建立servlet 类package .sample.testjsp.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet
15、;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;SuppressWarnings(serial) public class HelloServiceServlet extends HttpServlet Override protected void doGet(HttpServletRequest reques, HttpServletResponse response) throws ServletException, IOException this.d
16、oPost(reques, response); protected void doPost(HttpServletRequest reques, HttpServletResponse response) System.out.println(doPost PrintWriter out = response.getWriter(); properties.put(Context.INITIAL_CONTEXT_FACTORY, HelloServiceRemote dao = (HelloServiceRemote) ctx.lookup( out.println(dao.getHello(macServlet out.println( TOMCAT重启8190/helloEJBClient/HelloWorldServlet
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1