本人调试环境是:Tomcat7 jBOSS4.2.3GA
先创建一个普通的java项目 名为HelloWorld
导入JBOSS下的client下的所有jar包
接着开始进行编码
HelloWorld.java
package cn.heardy.ejb3; /** * 如果是远程调用,则使用此接口 * @author heardy * */ public interface HelloWorld { public String sayHello(String name); }
HelloWorldLocal.java
package cn.heardy.ejb3; /** * 如果是本地调用,则使用此接口 * @author heardy * */ public interface HelloWorldLocal extends HelloWorld { }
HelloWorldBean.java
package cn.heardy.ejb3.imp; import javax.ejb.Local; import javax.ejb.Remote; import javax.ejb.Stateless; import cn.heardy.ejb3.HelloWorld; import cn.heardy.ejb3.HelloWorldLocal; @Stateless @Remote(HelloWorld.class) @Local(HelloWorldLocal.class) public class HelloWorldBean implements HelloWorld, HelloWorldLocal { public String sayHello(String name) { return name + "说:你好,我来自JBOSS信息!"; } }
package ejbTest; import java.util.Properties; import javax.naming.InitialContext; import javax.naming.NamingException; import cn.heardy.ejb3.HelloWorld; public class HelloWorldTest { public static void main(String[] args) { /** * 硬编码模式 */ try { Properties props = new Properties(); // 设置JNDI驱动的类名 props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); // 提供命名服务的URL props.setProperty("java.naming.provider.url", "localhost:1099"); InitialContext ctx = new InitialContext(props); HelloWorld helloWorld = (HelloWorld) ctx .lookup("HelloWorldBean/remote"); System.out.println(helloWorld.sayHello("Eclipse客户端")); } catch (NamingException e) { System.out.println(e.getMessage()); } /** * 通过src下的jndi.properties进行初始化 */ try { InitialContext ctx = new InitialContext(); HelloWorld helloWorld = (HelloWorld) ctx .lookup("HelloWorldBean/remote"); System.out.println(helloWorld.sayHello("小明")); } catch (NamingException e) { System.out.println(e.getMessage()); } } }jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.provider.url=localhost:1099
这样EJB服务端就开发完成了,将此项目打包成jar,发布到jboss下
项目结构图
接着运行HelloWorldTest,查看能否进行远程访问
Test运行后控制台打印的信息
接着进行客户端的开发
创建一个web项目,名为HelloWorldClient
导入JBOSS下的client下的所有jar包,及服务端打包的jar文件,其实服务端只需要打包接口就可以了,无需impl路径下的class
接着写jsp页面
index.jsp
<%@page import="javax.naming.NamingException"%> <%@page import="cn.heardy.ejb3.HelloWorld"%> <%@page import="javax.naming.InitialContext"%> <%@page import="java.util.Properties"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% try { Properties props = new Properties(); // 设置JNDI驱动的类名 props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); // 提供命名服务的URL props.setProperty("java.naming.provider.url", "localhost:1099"); InitialContext ctx = new InitialContext(props); HelloWorld helloWorld = (HelloWorld) ctx .lookup("HelloWorldBean/remote"); out.println(helloWorld.sayHello("Tomcat Web Remote客户端")); } catch (NamingException e) { out.println(e.getMessage()); } %> </body> </html>
<%@page import="javax.naming.NamingException"%> <%@page import="cn.heardy.ejb3.HelloWorld"%> <%@page import="javax.naming.InitialContext"%> <%@page import="java.util.Properties"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% try { Properties props = new Properties(); // 设置JNDI驱动的类名 props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); // 提供命名服务的URL props.setProperty("java.naming.provider.url", "localhost:1099"); InitialContext ctx = new InitialContext(props); HelloWorld helloWorld = (HelloWorld) ctx .lookup("HelloWorldBean/local"); out.println(helloWorld.sayHello("JBOSS Web Local客户端")); } catch (NamingException e) { out.println(e.getMessage()); } %> </body> </html>
访问indexLocal.jsp:将此项目打包成war,去除包WEB-INF下的lib文件夹,将此war包部署到jboss上,通过浏览器访问此页面
访问本地接口
访问index.jsp:将此项目打包成war,WEB-INF下的lib文件夹需要导入BOSS下的client下的所有jar包,及服务端打包的jar文件,将此war包部署到tomcat上,tomcat不能用ide工具启动,我们需要直接启动tomcat,要不会报错,然后通过浏览器访问此页面
访问远程接口
lib下的部分jar包展示
打包后的相关包
源码级jar war包下载地址:http://download.csdn.net/detail/heardy/3720280