開發(fā)一個簡單的EJB
一:EJB開發(fā)基本上都遵循一個過程,從總體上說,可以分成 五個步驟:
.EJB程序代碼編寫
.EJB程序代碼編譯
.EJB部署描述文件編寫
.打包
.編譯生成容器代碼
二:簡單介紹 EJB代碼編寫
HelloWorld EJB程序代碼包括的接口和類名如下:
HelloHome 主接口 繼承 javax.ejb.EJBHome
HelloHome.java 文件名
功能:定義創(chuàng)建方法
Hello 遠程接口 繼承 javax.ejb.EJBObject
Hello.java 文件名
功能:定義業(yè)務(wù)邏輯方法
HelloBean Bean 類 繼承 javax.ejb.SessionBean HelloBean.java 文件名
功能:實現(xiàn)業(yè)務(wù)邏輯
HelloClient 客戶端類 HelloClient.java 文件名
功能:測試程序
三:代碼編寫源碼
<1>:HelloHome.java
- package com.aaa.cjh;
- public interface HelloHome extends javax.ejb.EJBHome {
- Hello create()throws java.rmi.RemoteException,
- javax.ejb.CreateException;
- }
<2>:Hello.java
- package com.aaa.cjh;
-
- public interface Hello extends javax.ejb.EJBObject{
- public String hello()throws java.rmi.RemoteException;
- public String helloOne()throws java.rmi.RemoteException;
- }
<3>:HelloBean.java
- package com.aaa.cjh;
-
- import javax.ejb.SessionContext;
-
- import org.apache.log4j.Logger;
-
- public class HelloBean implements javax.ejb.SessionBean {
-
- Logger log = Logger.getLogger(HelloBean.class);
-
- private SessionContext ctx;
-
- public void ejbCreate(){
- log.debug("ejbCreate()");
- }
- public void ejbRemove(){
- log.debug("ejbRemove()");
- }
- public void ejbActivate(){
- log.debug("ejbActivate()");
- }
- public void ejbPassivate(){
- log.debug("ejbPassivate()");
- }
- public void setSessionContext(javax.ejb.SessionContext ctx){
- this.ctx =ctx;
- }
- public String hello(){
- log.debug("hello()");
- return "Hello,-----------------World!";
- }
-
- public String helloOne(){
- log.debug("helloOne()");
- return "helloOne,-----------------World!";
- }
- }
<4>:HelloClient.java
- package com.aaa.cjh;
- import java.util.Properties;
-
- import javax.naming.Context;
- import javax.naming.InitialContext;
- import javax.rmi.PortableRemoteObject;
-
- public class Test {
-
-
-
-
- public static void main(String[] args) {
-
- Properties prop = new Properties();
- prop.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
- prop.put(Context.PROVIDER_URL, "t3://localhost:端口號");
- prop.put(Context.SECURITY_PRINCIPAL, "weblogic用戶名");
- prop.put(Context.SECURITY_CREDENTIALS, "weblogic密碼");
-
- Context context = null;
- try {
- context = new InitialContext(prop);
- HelloHome home = (HelloHome) PortableRemoteObject.narrow(context.lookup("HelloBean"),HelloHome.class);
- Hello hello = home.create();
- String docc=hello.hello();
- String doccc=hello.helloOne();
- System.out.println("完成");
- System.out.println(docc);
- System.out.println(doccc);
- context.close();
- } catch(Exception ex) {
- ex.printStackTrace();
- }
-
- }
-
- }
四:EJB部署文件編寫
<1>:ejb-jar.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!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>
- <display-name>HelloBean</display-name>
- <ejb-name>HelloBean</ejb-name>
- <home>com.aaa.cjh.HelloHome</home>
- <remote>com.aaa.cjh.Hello</remote>
- <ejb-class>com.aaa.cjh.HelloBean</ejb-class>
- <session-type>Stateless</session-type>
- <transaction-type>Container</transaction-type>
- </session>
- </enterprise-beans>
- <assembly-descriptor>
- <container-transaction>
- <method>
- <ejb-name>HelloBean</ejb-name>
- <method-name>*</method-name>
- </method>
- <trans-attribute>Required</trans-attribute>
- </container-transaction>
- </assembly-descriptor>
- </ejb-jar>
<2>:weblogic-ejb-jar.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" "http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">
- <weblogic-ejb-jar>
- <weblogic-enterprise-bean>
- <ejb-name>HelloBean</ejb-name>
- <jndi-name>HelloBean</jndi-name>
- </weblogic-enterprise-bean>
- </weblogic-ejb-jar>
<3>:MANIFEST.MF
Manifest-Version: 1.0
Created-By: 1.5.0_04 (Sun Microsystems Inc.)
五:打包 pkg.bat 文件
@echo off
set PATH=D:\Program Files\Java\jdk1.5.0_04\bin;%PATH%
del HelloBean.jar
jar -cvf HelloBean.jar .
六:部署EJB 該實例在weblogic中部署EJB的jar包
以上操作完成后,執(zhí)行HelloClient.java內(nèi)進行調(diào)用測試。