Tomcat web工程 调用 JBOSS EJB local及remote

来源:互联网 发布:淘宝软妹店铺推荐 编辑:程序博客网 时间:2024/05/16 10:25

本人调试环境是: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信息!";}}

HelloWorldTest.java

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");// 提供命名服务的URLprops.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.NamingContextFactoryjava.naming.provider.url=localhost:1099

这样EJB服务端就开发完成了,将此项目打包成jar,发布到jboss

项目结构图


项目部署到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");// 提供命名服务的URLprops.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>

indexLocal.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");// 提供命名服务的URLprops.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

原创粉丝点击