Tomcat web工程 调用 JBOSS EJB local及remote

本人调试环境是: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");
			// 提供命名服务的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

Tomcat web工程 调用 JBOSS EJB local及remote_第1张图片

项目结构图


项目部署到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>

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");
			// 提供命名服务的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,要不会报错,然后通过浏览器访问此页面


访问远程接口

Tomcat web工程 调用 JBOSS EJB local及remote_第2张图片

lib下的部分jar包展示


打包后的相关包


源码级jar war包下载地址:http://download.csdn.net/detail/heardy/3720280

你可能感兴趣的:(Tomcat web工程 调用 JBOSS EJB local及remote)