很多书上都有第一个EJB,也都讲了如何部署EJB,可是大部分都是讲通用的部分,对于某一个特定的服务器,都没有细讲。导致作为初学者的笔者,很难跨越这第一个门槛。对于作为初学者的笔者来说,这篇文章有价值的有两部分,一部分为JNDI配置运行环境,一部分为如何通过weblogic-ejb-jar.xml发布EJB服务。
为了其他的初学者不用花太多的时间迈这道门槛,笔者将自己的体会写出来,仅供大家参考,更希望众位高手,多多指教!
关于第一个EJB的远程/本地接口、远程Home/本地Home接口,EnterpriseBean,我在这里不会特别强调,会给出代码。因为这部分几乎所有的书上都有。
再次特别强调部署的xml文件。
ejb-jar.xml和weblogic-ejb-jar.xml。
下面我把这两部分贴出来,供大家参考!
------ejb-jar.xml开始-----------------------------------------
<ejb-jar> <display-name>HelloWorld</display-name> <enterprise-beans> <session> <display-name>Hello</display-name> <ejb-name>Hello</ejb-name> <home>HelloHome</home> <remote>Hello</remote> <local-home>HelloLocalHome</local-home> <local>HelloLocal</local> <ejb-class>HelloBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>Hello</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar> ------ejb-jar.xml结束-----------------------------------------
------weblogic-ejb-jar.xml开始-----------------------------------------
<weblogic-ejb-jar> <weblogic-enterprise-bean> <ejb-name>Hello</ejb-name> <jndi-name>Hello</jndi-name> <remote-client-timeout>0</remote-client-timeout> </weblogic-enterprise-bean> </weblogic-ejb-jar>------weblogic-ejb-jar.xml结束-----------------------------------------显然,这是非常简单的,可是没人指导的情况下,总是让人很头疼,通常都是不知道weblogic-ejb-jar.xml如何设置。这两个文件要放到EJBModule的META_INF当中下面看看这个Hello的几个代码。----Hello.java------------------------------------------import javax.ejb.EJBObject;
import java.rmi.*;
public interface Hello extends EJBObject {
public String Hello() throws RemoteException;
}
----HelloHome.java--------------------------------------import javax.ejb.*;
import java.rmi.*;
public interface HelloHome extends EJBHome {
public Hello create() throws RemoteException,CreateException;
}----HelloLocal.java--------------------------------------import javax.ejb.EJBLocalObject;
public interface HelloLocal extends EJBLocalObject {
public String Hello() ;
}----HelloLocalHome.java----------------------------------import javax.ejb.EJBLocalHome;
public interface HelloLocalHome extends EJBLocalHome {
public HelloLocal create() throws javax.ejb.CreateException;
}----HelloBean.java---------------------------------------import javax.ejb.*;
import java.rmi.*;public class HelloBean implements SessionBean{
public HelloBean() {
}
public void ejbCreate(){}
public void ejbActivate()throws EJBException,RemoteException{}
public void ejbRemove()throws EJBException,RemoteException{}
public void setSessionContext(SessionContext ctx)throws EJBException,RemoteException{}
public void ejbPassivate()throws EJBException,RemoteException{}public String Hello(){return "Hello World";}
}--------------------------------------------------------------
这样这个EJB就算是比较全了,经过打包以后部署到服务器中,就算OK了。下面说一下,如何通过客户端来使用这个EJB.这个地方也是比较不容易顺利通过的。第一步:配置运行环境。对于初学者来说,要懂得JNDI的知识。我们要使用JNDI来查找远程服务器端提供的服务。在客户端有几种方式:1、向Java运行目录中JNDI属性文件中添加属性;2、为程序提供资源文件;3、制定传递至应用程序的命令行参数;4、制定传递到applet的参数;5、在程序中硬编码(Hard-code)参数。这里我们使用第一种方式。我的bea安装到了E:下,他自己默认的jdk的运行目录为E:beajdk142_05jre我们要在E:/bea/jdk142_05/jre/lib目录下添加一个名字为jndi.properties的文件(如果没有这个文件的话)内容如下:java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
java.naming.provider.url=t3://172.29.26.168:7001需要修改的是第二行的IP字段,修改成提供服务的服务器IP地址和端口号即可。注意:由于我们指定了weblogic.jndi.WLInitialContextFactory所以,在系统环境变量中我们要将weblogic.jar包含到CLASSPATH当中,当然j2ee.jar也要包含进去。至此,如果笔者没记错的话,运行环境算是配置完了。第二步:获得该EJB的本地或远程接口类文件,或者是一个经过打包的jar文件,即客户端jar文件,也要包含到CLASSPATH中去。这样基本上就可以运行客户端测试了。下面是客户端代码:------------------------------------------import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Properties;public class HelloClient {
public HelloClient() {
}public static void main(String []args)throws Exception{
Properties props=System.getProperties();
Context ctx=new InitialContext();
Object obj=ctx.lookup("Hello");
HelloHome Home=(HelloHome)javax.rmi.PortableRemoteObject.narrow(obj,HelloHome.class);
Hello hello=Home.create();
System.out.println(hello.Hello());
}
}建议:如果在JBuild2006中运行这个程序会非常的容易。当然您也可以通过命令行来运行。如前文所述,笔者对于如何编写weblogic-ejb-jar.xml和如何让客户端获得运行环境方面着重说明,其他部分网上很多都有,故不详细说明!如果上述过程仍然不能让您运行您的第一个EJB,请与笔者联系:email:barryzhong@163.comQQ:84639006