myeclipse+jboss创建Ejb/EAR详细步骤

时间:2021-01-06 09:35:57

我用的是myeclipse8.6、jboss-5.1.0。

ear项目=web项目+ejb项目,所以这也可以说是学习ejb工程。

myeclipse+jboss创建Ejb/EAR详细步骤

各种jvm环境的配置就不说了,直接说正事:

创建Enterprise Application Project即EAR项目

myeclipse+jboss创建Ejb/EAR详细步骤

myeclipse+jboss创建Ejb/EAR详细步骤

接下来Next,然后默认到完成,就会自动生成两个项目:earEJB和earWeb。这样就三个项目了:

myeclipse+jboss创建Ejb/EAR详细步骤

现在来看一下最后的目录结构吧:

earEJB:                                                                                     earWeb:

myeclipse+jboss创建Ejb/EAR详细步骤          myeclipse+jboss创建Ejb/EAR详细步骤

总的EAR项目,会自动生成:

myeclipse+jboss创建Ejb/EAR详细步骤

关于XDoclet大家肯定有所了解,这里不再啰嗦,只给出最后的配置:

myeclipse+jboss创建Ejb/EAR详细步骤

其他的建包,建bean,run xdoclet什么的大家肯定都懂的,不懂自己去查。现在上代码:

在earEJB项目中创建"ejb3 session bean":(注意按我所给图上的目录包层次创建)

ConverterBean:

 

/*
* Created on 2004-7-1
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package com.ejb;
import java.rmi.RemoteException;

import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* @ejb.bean name="Converter"
*jndi-name="ConverterBean"
*type="Stateless"
*
*--
* This is needed for JOnAS.
* If you are not using JOnAS you can safely remove the tags below.
* @jonas.bean ejb-name="Converter"
*jndi-name="ConverterBean"
*
*--
**/
public class ConverterBean implements SessionBean {
/**
* @ejb.interface-method
*view-type="remote"
**/
public String toLowerCase(String s){
return s.toLowerCase();
}
/**
* @ejb.interface-method
*view-type="remote"
**/
public String toUpperCase(String s){
return s.toUpperCase();
}
/**
* @return
* @ejb.interface-method
*view-type="remote"
**/
public void ejbCreate() throws CreateException {
// TODO Add ejbCreate method implementation
}
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub

}
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub

}
public void ejbRemove() throws EJBException, RemoteException {
// TODO Auto-generated method stub

}
public void setSessionContext(SessionContext arg0) throws EJBException,
RemoteException {
// TODO Auto-generated method stub

}
}

其他的run xdoclet自动生成。可以删除不需要的 .java文件。
然后在earWeb项目中编写测试程序:

新建一个Servlet:testConverter.java:(注:设置<url-mapping>/convert</url-mapping>)

/*
* Created on 2004-9-17
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
import java.io.IOException;
import java.io.PrintWriter;
import javax.naming.InitialContext;

import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;

import com.interfaces.*;

/**
* @author aa
*
* To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class testConverter extends HttpServlet {
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
//TODO Method stub generated by Lomboz
//TODO Method stub generated by Lomboz
//TODO Method stub generated by Lomboz
response.setContentType("text/html");
PrintWriter out =response.getWriter();
out.println("<html><head><title>the first EJB</title></head>");
try{
InitialContext ctx=new InitialContext();
Object objRef = ctx.lookup("ConverterBean");
//主接口
ConverterHome
home=(ConverterHome)javax.rmi.PortableRemoteObject.narrow(
objRef,ConverterHome.class);
//组件接口
Converter bean =home.create();
out.println(bean.toLowerCase("HOW ARE YOU"));
out.println(bean.toUpperCase("how are you"));
}catch(javax.naming.NamingException ne){
out.println("Naming Exception caught:"+ne);
ne.printStackTrace(out);
}catch(javax.ejb.CreateException ce){
out.println("Create Exception caught:"+ce);
ce.printStackTrace(out);
}catch(java.rmi.RemoteException re){
out.println("Remote Exception caught:"+re);
re.printStackTrace(out);
}
out.println("</body></html>");

}
}

http://localhost:8080/earWeb/convert 运行时会报错:

Warning: A Session bean must define at least one ejbCreate method.
Warning: Session bean class must not be abstract.

故而上面的代码还要改进一下,才不会出错:

针对第一个警告:加上ejbCreate方法就是了:

public void ejbCreate() throws CreateException { }  

针对第二个警告:使类不抽象就是了,去掉ConvertBean.java中的abstract关键字,然后:

myeclipse+jboss创建Ejb/EAR详细步骤

(大家可能觉得,为何不直接给代码,我想说的是:有错误出现时多看看错误提示!)

项目在Jboss下的部署就不啰嗦了吧,重启jboss,最后上效果:

myeclipse+jboss创建Ejb/EAR详细步骤

本人花了两天时间才搞定这个,用weblogic感觉没有用jboss简单,不过总算是成功了!