读书人

开发具有本地接口跟远程接口的无状态b

发布时间: 2013-03-21 10:08:17 作者: rapoo

开发具有本地接口和远程接口的无状态bean

开发步骤

1.开发服务端

?1.1 开发HelloWorld和HelloWorldLocal接口,在开发HelloWorldBean实现类

2.开发客户端

?2.1 开发EJBClient2的java客户端项目和EJBClient的web项目

3.把helloworld.jar服务和EJBClient.war都部署在JBoss容器里,helloworld.jar打包时只需要选定HelloWorld、HelloWorldLocal、HelloWorldBean这三个类导出即可;

HelloWorld.java //远程接口类

package cn.cmcc.ejb3;

?

public interface HelloWorld {

?

public String say(String name);

}

?

?

HelloWorldLocal.java //本地接口类,现在是模拟,所以就一样的

package cn.cmcc.ejb3;

?

public interface HelloWorldLocal extends HelloWorld {

?

}

?

?

HelloWorldBean.java //接口实现类

package cn.cmcc.ejb3.impl;

?

import javax.ejb.Local;

import javax.ejb.Remote;

import javax.ejb.Stateless;

?

?

import cn.cmcc.ejb3.HelloWorld;

import cn.cmcc.ejb3.HelloWorldLocal;

?

@Stateless //申明是一个无状态bean

@Remote(HelloWorld.class) ?//申明是一个远程接口,不写默认是本地接口

@Local(HelloWorldLocal.class) ?//申明是一个本地接口

public class HelloWorldBean implements HelloWorld,HelloWorldLocal {

?

@Override

public String say(String name) {

return name+":说,您好";

}

?

}

?

?

EJBClient2.java ?//这个是远程接口,因为这个项目和helloworld.jar不在同一个应用服务器中,所以调用远程接口

package cn.cmcc.test;

?

import javax.naming.InitialContext;

import javax.naming.NamingException;

?

import cn.cmcc.ejb3.HelloWorld;

?

public class EJBClient2 {

?

public static void main(String[] args) {

try {

//默认是去classpath下寻找jndi.properties文件

InitialContext ctx = new InitialContext();

HelloWorld helloworld = (HelloWorld) ctx

.lookup("HelloWorldBean/remote");

System.out.println(helloworld.say("佛山"));

} catch (NamingException e) {

System.out.println(e.getMessage());

}

}

}

?

?

EJBClient.war是一个web项目,和服务端部署在同一个JBOSS应用服务器中,就已个简单的页面

?

?

index.jsp

<%@ 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">

?

<%@page import="javax.naming.*"%>

<%@page import="cn.cmcc.ejb3.*"%><html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<%

try {

/*

当web客户端和EJB服务部署在同一个应用服务器中,因为应用服务器启动时会把JNDI驱动类等上下文信息添加进系统属性

当不再同一个应用服务器中,需要指定JNDI驱动类等上下文信息

因为现在是helloworld.jar服务和EJBClient.war都部署在JBoss容器里,所以不需要指定JNDI驱动类等上下文信息

*/

InitialContext ctx = new InitialContext();

HelloWorldLocal helloworld = (HelloWorldLocal) ctx

.lookup("HelloWorldBean/local");

out.println(helloworld.say("佛山"));

} catch (NamingException e) {

out.println(e.getMessage());

}

%>

</body>

</html>

?

?

读书人网 >开源软件

热点推荐