开发具有本地接口和远程接口的无状态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>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值