企业Java Beans

 1.设置各种环境变量

//setEnv.cmd 

rem 设置系统级环境变量

rem 读者可根据使用的安装目录自行确定

set JAVA_HOME=c:\bea\jdk131

set WL_HOME=c:\bea\wlserver6.1

set DOMAIN_NAME=mydomain

set path=%path%;%JAVA_HOME%\bin

set classpath=.;%classpath%;%WL_HOME%\lib\weblogic.jar

rem 设置工作目录

set EX_WEBAPP_CLASSES=%WL_HOME%\config\%DOMAIN_NAME%\applications\DefaultWebApp_myserver\WEB-INF\classes

set CLIENT_CLASSES=%WL_HOME%\config\%DOMAIN_NAME%\clientclasses

set SERVER_CLASSES=%WL_HOME%\config\%DOMAIN_NAME%\serverclasses

set classpath=%classpath%;%CLIENT_CLASSES%;%SERVER_CLASSES%

可将该文件存放在D:\ejb_instance目录下。运行该脚本程序的命令如下:

D:\ejb_instance\setEnv.cmd

14.2  编写远程接口程序

//引入需要类或接口

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

//远程接口的定义,必须继承EJBObject

public interface HelloWorld extends EJBObject {

//定义业务逻辑方法

public String sayHello() throws RemoteException;

}

14.3  编写本地接口程序

//引入需要类或接口

import java.io.Serializable;

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;

//本地接口的定义,必须继承EJBHome

public interface HelloWorldHome extends EJBHome {

//定义EJB的创建方法

public HelloWorld create() throws RemoteException,CreateException;

}

14.4    编程用Bean class实现远程接口中定义的业务

import java.rmi.RemoteException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

//Bean class实现业务逻辑,必须实现Session Bean接口

public class HelloWorldBean implements SessionBean {

//这是个会话EJB,声明会话上下文

private SessionContext sctx;

    //无参数的构造函数

public HelloWorldBean() {}

//接口SessionBean中定义的回调(callback)方法,必须实现

public void setSessionContext(SessionContext c) {

this.sctx=c;

}

//接口SessionBean中定义的回调(callback)方法,必须实现

public void ejbCreate() {}

public void ejbRemove() {}

public void ejbActivate() {}

public void ejbPassivate() {}

//供客户端调用的business函数,这里只是简单的返回一个字符串

public String sayHello() {

return "Hello World. Welcome to EJB!";

}

}

14.5   编写EJB说明文件

<?xml version="1.0" ?>

<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN' 'http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd'>

<!--EJB说明文件-->

<ejb-jar>

<enterprise-beans>

<!--定义会话EJB-->

<session>

<!--定义会话EJB-->

<ejb-name>HelloWorld</ejb-name>

<!--定义会话EJB主接口名-->

<home>HelloWorldHome</home>

<!--定义会话EJB远程接口名-->

<remote>HelloWorld</remote>

<!--定义会话EJB实现类名-->

<ejb-class>HelloWorldBean</ejb-class>

<!--定义会话EJB类型-->

<session-type>Stateless</session-type>

<transaction-type>Bean</transaction-type>

</session>

</enterprise-beans>

</ejb-jar>

14.6  WebLogic特定部署文件、

<?xml version="1.0"?>  

<!DOCTYPE weblogic-ejb-jar PUBLIC 

"-//BEA Systems, Inc.//DTD WebLogic 6.0.0 EJB//EN" 

"http://www.bea.com/servers/wls600/dtd/weblogic-ejb-jar.dtd" >

<!--WebLogic EJB部署说明文件-->

<weblogic-ejb-jar>

  <weblogic-enterprise-bean>

    <!--EJB-->

    <ejb-name>HelloWorld</ejb-name>

    <!--定义的JNDI-->

    <jndi-name>HelloWorldEJB</jndi-name>   

  </weblogic-enterprise-bean>

</weblogic-ejb-jar>

14.7  编写客户端测试程序

//引入需要的类和接口

import java.rmi.RemoteException;

import java.util.Properties;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;

import HelloWorld;

import HelloWorldHome;

public final class HelloWorldClient {

public static void main(String[] args) {

try {

//指定WebLogic Server的相关

Properties p=new Properties();

p.put(Context.INITIAL_CONTEXT_FACTORY,

"weblogic.jndi.WLInitialContextFactory");

p.put(Context.PROVIDER_URL,"t3://localhost:7001");

//客户端引用JNDI服务的InitialContext对象

Context ctx=new InitialContext(p);

Object h=ctx.lookup("HelloWorldEJB");

HelloWorldHome home=

(HelloWorldHome)PortableRemoteObject.narrow(h,

HelloWorldHome.class);

HelloWorld hwBean=home.create();

String msg=hwBean.sayHello();

System.out.println(msg);

}catch(Exception e) {

e.printStackTrace();

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值