在JBOSS服务器中通过本地接口调用EJB

客户端调用EJB有两种方法:1、远程接口;2、本地接口。在使用远程接口调用EJB时会产生性能消耗,因此,我们应该尽可能的采用本地接口调用EJB。使用本地接口调用EJB只需满足一个条件即可——在同一JVM中,也就是在同一服务器中,这样的话它们就可以直接在内存中进行互换。具体操作如下:

创建EJB:

先创建一个EJB接口:

package com.ejb;

public interface HelloWorld {

	public String sayHello(String name);
}

再创建EJB实现类

package com.ejb;
import javax.ejb.Local;
import javax.ejb.Stateless;

@Stateless//无状态
@Local(HelloWorld.class)//默认情况下为实现本地接口,远程接口的写法为:@Remote
public class HelloWorldBean implements HelloWorld {

	@Override
	public String sayHello(String name) {
		return name+"说:"+"我爱你";
	}

}
然后通过ANT将此EJB打成一个jar包,ANT的写法如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--工程名字以及它所在的目录,“.”代表跟此文件在同一目录-->
<project name="EJBTest" basedir=".">
	<!--相关属性-->
	
	<!--src的目录-->
	<property name="src.dir" value="${basedir}\src"></property>
	<!--声明环境变量的别名-->
	<property environment="env" />
	<!--jboss环境变量的值-->
	<property name="jboss.home" value="${env.JBOSS_HOME}"></property>
	<!--jboss服务的加载项,在此设置为默认的-->
	<property name="jboss.server.config" value="default"></property>
	<!--class文件的存放目录-->
	<property name="build.dir" value="${basedir}\build"></property>

	<!--指定jboss的JAR包及class文件的路径-->
	<path id="build.classpath">
		<fileset dir="${jboss.home}\client">
			<include name="*.jar"/>
		</fileset>
		<!--class文件的目录-->
		<pathelement location="${build.dir}"/>
	</path>
	
	<!--创建class文件目录-->
	<target name="prepare">
		<delete dir="${build.dir}"></delete>
		<mkdir dir="${build.dir}"/>
	</target>
	
	<!--创建编译任务时的环境,depends表示在执行此任务之前会先执行的任务-->
	<target name="compile" depends="prepare" description="编译">
		<javac srcdir="${src.dir}" destdir="${build.dir}">
			<classpath refid="build.classpath"></classpath>
		</javac>
	</target>
	
	<target name="ejbjar" depends="compile" description="创建EJB发布包">
		<jar destfile="${basedir}\${ant.project.name}.jar">
			<fileset dir="${build.dir}">
				<include name="**/*.class"/>
			</fileset>
		</jar>
	</target>
	
	<target name="deploy" depends="ejbjar" description="发布EJB">
		<copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"/>
	</target>
	
	<!--
	<target name="undeploy" description="卸载EJB">
		<delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"/>
	</target>
	-->
</project>

执行的操作如下:


当然,在执行ANT执行先得启动JBOSS服务器。这样的话,在执行完此ANT之后后台就会打印出一下信息:


然后,再新建一个web工程,建立一个EJB客户端的jsp页面,代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ page import="javax.naming.*,com.ejb.*" %>
<!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=ISO-8859-1">
<title>EJB客户端</title>
</head>
<body>
<%
	try {
	InitialContext ctx = new InitialContext();
	HelloWorld helloworld = (HelloWorld)ctx.lookup("HelloWorldBean/local");//括号内为JNDI名称,远程接口时为:类名/remote(local)
	out.print(helloworld.sayHello("北京本地人"));
} catch (NamingException e) {
	e.printStackTrace();
}
%>
</body>
</html>

接着,把此工程打成一个war包,然后丢到JBOSS服务器中,路径为:D:\JBoss\jboss-5.1.0.GA\server\default\deploy

最后直接在页面中输入相应的地址就可打印你想要的结果,如图:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值