简单EJB的例子

终于把EJB的例子完成了,从WWW上搜索的内容太多,而且有的只贴代码,不讲部署。这次把前后的步骤都列出来,以免以后给忘记了。

首先,服务器环境,jboss-4.0.5.GA,需要安装JDK1.5 或者更高版本。

其次是JAVA代码:

package test;

import javax.ejb.EJBObject;

import java.rmi.RemoteException;



public interface Hello extends EJBObject

{ 

    public String sayHello() throws RemoteException;

} 
package test;

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;



public interface HelloHome  extends EJBHome

{ 

    Hello create() throws CreateException,RemoteException;

} 
最后是会话BEAN
package test;

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBException;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;



public class HelloBean implements SessionBean

{ 

    private SessionContext ctx;

    private String word;

    

    public void ejbActivate() throws EJBException, RemoteException

    {

        

    }

    



    public void ejbPassivate() throws EJBException, RemoteException

    {

    }



    public void ejbRemove() throws EJBException, RemoteException

    {

    }

    

    public void ejbCreate() throws CreateException

    {

        word = "Hello World!";

    }

    

    public String sayHello()

    {

        System.out.println("I am an EJB Of Server..." + word);

        return word;

    }



    public void setSessionContext(SessionContext context) throws EJBException, RemoteException

    {

        this.ctx = context;

    }

} 
 若要编译上面的.JAVA文件,需要 jnp-client.jar jboss-j2ee.jar jbossall-client.jar
 
同时还需要建立一个META-INF目录,把必须的文件COPY进去。
ejb-jar.xml 文件内容如下

<?xml version="1.0"?>

<!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>HelloHome</ejb-name>

				<home>test.HelloHome</home>

				<remote>test.Hello</remote>

				<ejb-class>test.HelloBean</ejb-class>

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

				<transaction-type>Container</transaction-type>

			</session>

		</enterprise-beans>



		<assembly-descriptor>

			<container-transaction>

				<method>

					<ejb-name>HelloHome</ejb-name>

					<method-name>*</method-name>

				</method>

				<trans-attribute>Required</trans-attribute>

			</container-transaction>

		</assembly-descriptor>

	</ejb-jar>
 
要部署到JBOSS 容器中,还需要 jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
   <enterprise-beans>
       <session>
           <ejb-name>HelloHome</ejb-name>
           <jndi-name>ejb/MyFirstEJB</jndi-name>
       </session>
   </enterprise-beans>
</jboss>
使用工具打包成 .jar 注意把 META-INF 目录下的内容要打包进去。然后部署到JBOSS 应用中。
部署成功的话,应该可以看到如下的信息。
INFO  [ProxyFactory] Bound EJB Home 'HelloHome' to jndi 'ejb/MyFirstEJB' 
部署成功后,写CLIENT 进行测试。
import java.util.Properties;



import javax.naming.Context;

import javax.naming.InitialContext;

import javax.rmi.PortableRemoteObject;



import test.Hello;

import test.HelloHome;



/**

 * <p/>创 建 人:孟昭熠

 * <p/>创建日期:2008-6-20

 * <p/>创建时间:17:16:09

 * <p/>功能描述:

 * <p/>==============================================================

 * <p/>修改历史

 * <p/>修改人                修改时间                修改原因

 * <p/>==============================================================

 */



public class HelloClientTest {



	/**

	 * @param args

	 */

           public static void main(String[] args) {

	try {

	           // 创建一个JNDI naming contest

			

	Properties env = new Properties(); 

	env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory"); 

	env.put(Context.PROVIDER_URL, "localhost:1099"); 

	env.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces"); 

			

	           Context initial = new InitialContext(env);

	         

	           // 从JNDI 中以MyConverter 名子来定位到对象(在发布名称指定了JNDI名称)

	           //Object objref = initial.lookup("java:comp/env/ejb/MyFirstEJB");

	           Object objref = initial.lookup("ejb/MyFirstEJB");

	         

	           // 通过objref 得到ConverterHome 本地接口

	           HelloHome home = (HelloHome)PortableRemoteObject.narrow(

	                   objref, HelloHome.class);

	         

	           // 再由Home 接口的create 方法来创建一个服务器上的EJB实例

	           Hello hello = home.create();

	         

	           // 调用EJB 中的方法

	           

	           System.out.println(hello.sayHello());

	       }

	       catch(Exception ex){

	           System.err.println("Caught an unexpected exception!");

	           ex.printStackTrace();

	       }





	}



}

 
至此,调用成功后结束。会看到JBOSS服务器有内容输出。
INFO  [STDOUT] I am an EJB Of Server...Hello World!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值