top
Loading...
EJBInterface
在開始寫代碼之前請在你的磁盤上建立一個目錄,這個目錄中存放所有的程序的源代碼和編繹后的代碼和壓縮包以及所有的xml配置文件。在我這里是這樣的,我在C盤的根目錄下建立了一個目錄叫做hdsite,同時在這個目錄中建立一個目錄叫做src的存放所有的源代碼和工程中需要的配置文件。在src下建立一個java的目錄存放所有的java源文件,建立一個xml目錄,存放所有的xml配置文件。所建的目錄具體如下:

hdsite/
hdsite/src/
hdsite/src/java/
hdsite/src/java/net/chinacode/hello/
hdsite/src/java/net/chinacode/hello/sejb/
hdsite/src/java/net/chinacode/hello/web/
hdsite/src/xml/
hdsite/src/xml/ejb/
hdsite/src/xml/web/

首先我們來完成Home Interface,因為Home Interface只是簡單的完成了一個固定的工作,所以一個Session Bean的Home Interface差不多都一個樣子:

package net.chinacode.hello;

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

public interface HelloHome extends EJBHome
{
public Hello create() throws CreateException, RemoteException;
}

我們將它存為hdsite/src/java/net/chinacode/hello中的HelloHome.java。它繼承了EJBHome的create方法,它返回Hello這個EJB Remote Interface。哪么Remote Interface怎么寫呢?我們首先需要確定我們的EJB要完成客戶的什么樣的功能。我們希望向EJB輸入一個人名,由EJB返回Hello 人名。調用EJB的方法名就叫做sayHello,哪么這個方法就應體現到Remote Interface中去,代碼如下:

package net.chinacode.hello;

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

public interface Hello extends EJBObject
{
public String sayHello(String strName) throws RemoteException;
}

我們將它存為hdsite/src/java/net/chinacode/hello中的Hello.java。它只是說明了在EJB中會向用戶提供的方法。哪么具體的實現則由EJB中的Bean實體來完成,其代碼如下:

package net.chinacode.hello;

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

public class HelloBean extends Object implements SessionBean{

public String sayHello(String strName) {
return "Hello " + strName + "...";
}

public void ejbCreate() throws EJBException, RemoteException {
}

public void ejbActivate() throws EJBException, RemoteException {
}

public void ejbPassivate() throws EJBException, RemoteException {
}

public void ejbRemove() throws EJBException, RemoteException {
}

public void setSessionContext(SessionContext context) throws EJBException, RemoteException {
}

}

我們將這個文件存為hdsite/src/java/net/chinacode/hello/HelloBean.java。這里除了sayHello方法之外都是繼承SessionBean類來實現的方法,一般情況下都是固定的。如果你需要在服務器對EJB進行相關操作時要在Bean中進行一些操作,哪么你可以在相應的ejbCreate、ejbRemove這樣的方法中寫入自己的代碼。好了,這三個就是我們的EJB的三個組成部分了,我們還需要給orion一個xml文件,在這個xml文件中說明我們要使用的ejb的框架。這個xml文件的內容如下:

<?xml version="1.0"?>


<EJB-JAR>
<DISPLAY-NAME>HD Test EJB (EJB module)</DISPLAY-NAME>
<DESCRIPTION>HD EJB Sampale</DESCRIPTION>
<ENTERPRISE-BEANS>
<SESSION>
<DISPLAY-NAME>The HelloEJB session bean</DISPLAY-NAME>
<EJB-NAME>net.chinacode.hello.Hello</EJB-NAME>
<HOME>net.chinacode.hello.HelloHome</HOME>
<REMOTE>net.chinacode.hello.Hello</REMOTE>
<EJB-CLASS>net.chinacode.hello.HelloBean</EJB-CLASS>
<SESSION-TYPE>Stateless</SESSION-TYPE>
</SESSION>
</ENTERPRISE-BEANS>
<ASSEMBLY-DESCRIPTOR>
<SECURITY-ROLE>
<DESCRIPTION>Users</DESCRIPTION>
<ROLE-NAME>users</ROLE-NAME>
</SECURITY-ROLE>
</ASSEMBLY-DESCRIPTOR>

</EJB-JAR>

這個xml文件說明了net.chinacode.hello.Hello這個EJB的框架。我來看看在enterprise-beans段中的一個session段說明了一個session bean的結構,說明了這個ejb的home internface、bean class、remote interface,同時也向orion說明這個session bean的類型是Stateless。我們把這個文件存入hdsite/src/xml/ejb/ejb-jar.xml文件中。這樣我們就完成了一個系統中的EJB這部分。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗