本人调试环境是: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下
项目结构图
项目部署到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,要不会报错,然后通过浏览器访问此页面
访问远程接口
lib下的部分jar包展示
打包后的相关包
源码级jar war包下载地址:http://download.csdn.net/detail/heardy/3720280