(3)EJB3.0 开发具有本地接口的----无状态bean

一:开发本地接口



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="javax.naming.*,cn.itm.ejb3.*" %>
<!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>Insert title here</title>
</head>
<body>

<%

try {
		InitialContext ic = new InitialContext( );
			HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/local");
		  // HelloWorldLocal hw = (HelloWorldLocal) ic.lookup("HelloWorldBean/local");
		String message = hw.sayHello("本地人 ");
		out.println(message);
	}catch (NamingException e) {
		e.printStackTrace();
	}

%>



</body>
</html>

HelloWOrld项目:


package cn.itm.ejb3;

public interface HelloWorld {

	// 业务方法:
	public String sayHello(String name);
}

package cn.itm.ejb3.impl;

import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import cn.itm.ejb3.HelloWorld;
import cn.itm.ejb3.HelloWorldLocal;

@Stateless // 指明EJB他是一个无状态的会话bean。

@Local(HelloWorld.class)  // 本地接口。

/*@Remote(HelloWorld.class)    // 
@Local(HelloWorldLocal.class)  // 如果客户端  和 EJB是部署在同一个 jboss 内,我们优先调用 本地接口。
*/
public class HelloWorldBean implements HelloWorld,HelloWorldLocal{

	@Override
	public String sayHello(String name) {
		return name + "说:您好,世界!!";
	}

}

package cn.itm.test;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import cn.itm.ejb3.HelloWorld;

public class EJBTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		try {
			InitialContext ic = new InitialContext( );
			HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/local"); 
		//	HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/remote");  // 不在同一个jvm类 只能通过远程。
			String message = hw.sayHello("天海");
			System.out.println(message);
		} catch (NamingException e) {
			e.printStackTrace();
		}

	}

}

注意:

首先:启动jboss,在build.xml中发布helloworld项目。

要把helloworld项目导入到EJBClient项目中。

然后:把EJBClient项目打成war包,放到安装jboss的deploy的发布目录、


最后:在浏览器中输入本地接口。





不在同一个jvm类 只能通过远程。

如果客户端  和 EJB是部署在同一个 jboss 内,我们优先调用 本地接口。



二:既有本地又有远程的调用。


package cn.itm.ejb3.impl;

import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import cn.itm.ejb3.HelloWorld;
import cn.itm.ejb3.HelloWorldLocal;

@Stateless // 指明EJB他是一个无状态的会话bean。



@Remote(HelloWorld.class)    // 
@Local(HelloWorldLocal.class)  // 如果客户端  和 EJB是部署在同一个 jboss 内,我们优先调用 本地接口。

public class HelloWorldBean implements HelloWorld,HelloWorldLocal{

	@Override
	public String sayHello(String name) {
		return name + "说:您好,世界!!";
	}

}

package cn.itm.test;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import cn.itm.ejb3.HelloWorld;

public class EJBTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		try {
			InitialContext ic = new InitialContext( );
			HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/remote");  // 不在同一个jvm类 只能通过远程。
			String message = hw.sayHello("天海");
			System.out.println(message);
		} catch (NamingException e) {
			e.printStackTrace();
		}

	}

}

package cn.itm.ejb3;

public interface HelloWorldLocal extends HelloWorld {

}

package cn.itm.ejb3;

public interface HelloWorld {

	// 业务方法:
	public String sayHello(String name);
}

package cn.itm.test;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import cn.itm.ejb3.HelloWorld;

public class EJBTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		try {
			InitialContext ic = new InitialContext( );
			HelloWorld hw = (HelloWorld) ic.lookup("HelloWorldBean/remote");  // 不在同一个jvm类 只能通过远程。
			String message = hw.sayHello("天海");
			System.out.println(message);
		} catch (NamingException e) {
			e.printStackTrace();
		}

	}

}

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%@ page import="javax.naming.*,cn.itm.ejb3.*" %>
<!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>Insert title here</title>
</head>
<body>

<%

try {
		InitialContext ic = new InitialContext( );
			
		HelloWorldLocal hw = (HelloWorldLocal) ic.lookup("HelloWorldBean/local");
		String message = hw.sayHello("本地人 ");
		out.println(message);
	}catch (NamingException e) {
		e.printStackTrace();
	}

%>



</body>
</html>

以下是配置文件ANT。

<?xml version="1.0" encoding="UTF-8"?>  

<!-- name中指的是项目名称。basedir指的是与build.xml的同级目录 -->  
<!-- 
(1)basedir 代表  项目所在的路径。

-->
<project name="HelloWorld" basedir=".">  
	<!-- 项目源文件 所在的目录。-->
    <property name="src.dir" value="${basedir}\src" />  
    <!-- 指向环境变量中系统变量 -->  
    <property environment="env" />  
    <!-- 指向系统变量中的JBOSS_HOME变量 ,可以得知JBOSS_HOME的安装地址 -->  
    <property name="jboss.home" value="${env.JBOSS_HOME}" />  
    <property name="jboss.server.config" value="default" />  
	<!-- class文件存在的目录 -->
    <property name="build.dir" value="${basedir}\build" />  
  
    <path id="build.classpath">  
    	<!-- 包含 client路径下的所有  jar文件-->
        <fileset dir="${jboss.home}\client">  
            <include name="*.jar" />  
        </fileset>  
        <pathelement location="${build.dir}" />  
    </path>  
  
    	
    <target name="prepare">  
        <delete dir="${build.dir}" />  
        <mkdir dir="${build.dir}" />  
    </target>  
        	
    <!-- depends="prepare" 确保 先执行上面的代码,在执行下面的代码  -->
  
    <target name="compile" depends="prepare" description="编译">  
    	<!-- class 存放到 destdir这个目录。在调用javac 这个目录就必须建立起来-->
        <javac srcdir="${src.dir}" destdir="${build.dir}" >  
            <classpath refid="build.classpath" />  
        </javac>  
    </target>  
  
    <target name="ejbjar" depends="compile" description="创建EJB发布包">  
        <jar jarfile="${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>   




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值