Gin工作室 2012-12-04
以前用myeclipse写过单独的ejb程序,也写过单独的web程序。服务器都是weblogic10.一直没有把他们整合起来。今天就来把ejb和web项目整合,实现一个真正的基于MVC模式的应用程序。
1.新建一个EnterpriseApplicationproject:file-->new-->EnterpriseApplicationproject.然后写上工程的名字(我的工程名是qiyeji),选择javaee5(由于前面有先例,可参考我的另一篇文章《》,用j2ee1.4部署webproject到weblogic上会找不到web资源,所以选择javaee5)。最后就是选择“Newwebmodel”和“Newejbmodel”这两个复选框。
2.出现了三个项目文件:qiyeji,qiyejiEjb和qiyejiWeb。各个项目名代表什么模块相信大家都清楚了,不多说。
3.建立ejb。在qiyejiEjb项目下建立个简单的EJBSessionbean。建立的方法和步骤可以参考网上的教程,http://www.blogjava.net/rickhunter/articles/25484.html给出了个myeclipse+weblogic开发ejb的非常详细的过程。需要注意的是,我们在此只需要建立bean类和所需的接口。不需要编写客户端测试。
4.在weblogic服务器上部署ejb。登录weblogic控制台,选择Deployments--->选择install按钮-->选择ejb(在此是qiyejiEjb),选择Class单选项。然后默认next最后save即可。
5.部署ejb完毕后可以查看ejb所对应的jndi名称。这个名称客户端查找ejb时要用到。
6.编写web客户端。在qiyejiWeb项目下的index.jsp写编写代码访问ejb。(可能要把bean中的接口的包复制到qiyejiWeb的src下,生成相应的接口。也可能不需要那样做,我的是复制了的而且成功了。)index.jsp代码如下:<%@pagelanguage="java"import="java.util.*"pageEncoding="ISO-8859-1"%>
<%@pageimport="rain.interfaces.*,javax.ejb.*,javax.naming.*"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>MyJSP'index.jsp'startingpage</title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
<metahttp-equiv="description"content="Thisismypage">
<!--
<linkrel="stylesheet"type="text/css"href="styles.css">
-->
</head>
<body>
ThisismyJSPpage.<br>
<%
Propertiesproperties=newProperties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
properties.setProperty(Context.PROVIDER_URL,"t3://localhost:7001");
Contextctx=null;
try
{
ctx=newInitialContext(properties);
HelloHomerainhome=(HelloHome)ctx.lookup("ejb/Hello");//在weblogic控制台中查到的ejb的jndi名称。
Hellohello=rainhome.create();
//rainhellohello=rainhome.create();
Strings=hello.SayHello();
%>
<%=s%>
<%
}
catch(Exceptionex)
{
ex.printStackTrace();
}
%>
</body>
</html>
也可以通过servlet调用ejb(推崇使用),我为了节省时间,直接用jsp调用了。
7.部署qiyejiWeb项目。选择myeclipse工具栏上的部署功能,选择project(这里是qiyejiWeb),然后选择add按钮,添加服务器为weblogic10.最后OK即可。
8.测试。启动weblogic服务器(如果没有启动的话)。在IE地址栏上输入http://localhost:7001/qiyejiWeb/。最后得到预料之中的结果,成功!