RESIN下配置EJB有四个步骤

来源:互联网 发布:淘宝卖鞋子的店铺 编辑:程序博客网 时间:2024/04/29 14:47
(1)在WEBAPPS文件夹下建立文件夹-OPENAMF,在OPENAMF/WEB-INF/WEB.XML中<web-app>标签下添加以下定义:
<web-app>
  <ejb-server config-directory="WEB-INF"/>
  <servlet servlet-name="hessian" servlet-class="com.caucho.hessian.EJBServlet"/>
  <servlet-mapping url-pattern="/hessian/*" servlet-name="hessian"/>
  <jndi-link jndi-name="java:comp/env/ejb" factory="com.caucho.ejb.hessian.HessianContextFactory">
    <init-param java.naming.provider.url="${app.url}/hessian"/>
  </jndi-link>
(2)[1]创建EJB(HELLOBEAN.JAVA)
package org.zhangyafei.ejbTest;




import java.rmi.*;
import javax.ejb.*;




public class HelloBean
                extends com.caucho.ejb.AbstractSessionBean {
  public String sayHelloWorld(String arg)
  {
      return "嗨!AMF-RPC for Java" + arg;
  }
  public void ejbCreate() throws CreateException {
      System.out.println("ejbCreate()");
  }




  public void ejbRemove() {
      System.out.println("ejbRemove()");
  }




  public void ejbActivate() {
      System.out.println("ejbActivate()");
  }




  public void ejbPassivate() {
      System.out.println("ejbPassivate()");
  }




  public void setSessionContext(SessionContext ctx) {
  }
}
HELLOBEAN。JAVA文件


[2]创建REMOTE接口(HELLO.JAVA)
package org.zhangyafei.ejbTest;




import java.rmi.*;
import javax.ejb.*;




public interface Hello extends EJBObject {
  public String sayHelloWorld(String arg) throws RemoteException;
}
[3]创建HOME接口(HELLOHOME.JAVA)
package org.zhangyafei.ejbTest;




import java.rmi.*;
import javax.ejb.*;




public interface HelloHome extends EJBHome {
  public Hello create() throws RemoteException, CreateException;
}
(3)部署EJB(hellobean.ejb)
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
<enterprise-beans>
  <session>
    <ejb-name>helloEJB</ejb-name>
<home>org.zhangyafei.ejbTest.HelloHome</home>
<remote>org.zhangyafei.ejbTest.Hello</remote>
<ejb-class>org.zhangyafei.ejbTest.HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
  </session>
</enterprise-beans>
</ejb-jar>


(4)使用EJB-----helloEJB.JSP
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ page import="com.caucho.hessian.client.HessianProxyFactory" %>
<%@ page import="javax.ejb.CreateException" %>
<%@ page import="org.zhangyafei.ejbTest.*" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>调用EJB</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<%
HelloHome helloHome;
// 使用Hessian协议连接到EJB服务器
try {
  // 创建一个HessianProxyFactory
  HessianProxyFactory factory = new HessianProxyFactory();
  // 查询helloEJB的home接口
  // helloEJB是由部署描述符的<ejb-name>标签定义的EJB名
  String serverUrl = "http://localhost:8080/openamf/hessian/helloEJB";
  helloHome = (HelloHome) factory.create(HelloHome.class,
                                         serverUrl);
} catch (Exception e) {
  throw new ServletException("/openamf/hessian/helloEJB", e);
}
%>
<%
try {
  // 使用HelloHome创建一个Home stub
  Hello hello = helloHome.create();
  // 使用Home stub调用sayHelloWorld方法
  out.println(hello.sayHelloWorld(",可以执行中文的"));
} catch (CreateException e) {
  throw new ServletException(e);
}
%> 
treterterter
</body>
</html>