« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
|
公告 |
我近期在研究Maven、Turbine、EJB,如果有朋友想一起交流学习,请加我的MSN:moshco_zhu@hotmail.com!
你为什么来,你何必来,叫我怎么见你!
--《小城之春》 |
| 
|
本站首页 管理页面 写新日志 退出
[01 技术文档]在Weblogic 10中做EJB3的开发 之HelloWorld |
在Weblogic 10中做EJB3的开发 之HelloWorld
---------------------------------------------------------------------------
阅读本文的前提条件是: 1.你必须有Java编程的基本能力,并能熟练使用servlet; 2.同时要能熟练并多次安装过weblogic server,了解安装的一些基本常识; 3.熟练使用Eclipse开发工具开发Java程序。
1.Weblogic 的版本
我使用的weblogic版本是Workshop for WebLogic 10,weblogic是从WebLogic 10.0的版本开始完全支持EJB3的。可是在Bea的主页上下载,下载地址是[http://www.bea.com.cn/products/workshop/workshop2/index.jsp],下载需要注册一个帐号,登录了帐号才可以顺利下载试用版。
2.一些准备工作
启动Workshop for WebLogic 10,其实就是Eclipse 3.2加入了Weblogic的一些插件,我除了用它启动Weblogic server以外,基本没有用到其它什么特别于Eclipse的功能,所以如果使用Eclipse 3.2也是一样的。
安装完成后需要首先创建一个域主目录,这个过程比较简单,按默认创建就可以了。
如果你安装的根目录是[D:\bea],那么你的服务器应该在[D:\bea\wlserver_10.0]。
启动开发环境以后,第一件要做的事是创建一个服务器,在服务器视图中新建,其它基本安默认来,只是在设定域目录时,注意设置在[D:\bea\user_projects\domains\base_domain],[base_domain]是你创建的域的名称。
系统安装的JRE版本要在[1.5]以上。
3.创建项目框架
创建一个用户自定义库: [窗口]->[首选项]->[Java]->[构建路径]->[用户库],点击[新建],名字叫[weblogic]。选中[Weblogic],点击[添加外部Jar],将[D:\bea\wlserver_10.0\server\lib]下的所有jar包导入到用户库[weblogic]。
新建一个普通的Java项目,需要导入两个库[系统jre库、用户自定义库weblogic],项目目录结构如下: [App] 应用程序主目录 [App\META-INF] 应用程序配置文件目录 [bin] Eclipse编译输出目录,项目创建的时候,要设置一个源代码默认输出目录,就是它 [Build] 编译、打包目录 [EJB3] EJB程序目录 [EJB3\JavaSource] EJB源代码目录 需要设置为源代码目录 [EJB3\META-INF] EJB程序配置文件目录 [Java] Java程序目录 [Java\JavaSource] Java程序源代码目录 需要设置为源代码目录 [WebContext] web程序目录 [WebContext\JavaSource] Web程序Java源代码目录 需要设置为源代码目录 [WebContext\WEB-INF] web程序配置文件目录
下面是需要首先编辑的几个文件 [App/META-INF/application.xml] ----------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://java.sun.com/xml/ns/j2ee" version="1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com /xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"> <!-- 引用程序名称 --> <display-name>EIB3Test</display-name> <!-- 应用程序描述 --> <description>EJB3 Test Application</description> <!-- EJB模块 --> <module> <!-- EJB模块Jar包 --> <ejb>ejb3test_ejb.jar</ejb> </module>
<!-- WEB模块 --> <module> <web> <!-- web模块包 --> <web-uri>ejb3test_web.war</web-uri> <!-- web模块根 就是http://localhost:7001/ejb3test --> <context-root>/ejb3test</context-root> </web> </module> </application> ----------------------------------------------------------------------- [WebContext/WEB-INF/web.xml] ----------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?>
<!-- version="2.4"这一部分不可以随便改动,改动容易造成发布错误 --> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- web项目发布名称 --> <display-name>ejb3test</display-name>
<!-- 默认文件列表 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list>
</web-app> -----------------------------------------------------------------------
创建一个Ant编译文件。 文件地址:[Build/build.xml] 内容如下: ----------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?>
<project default="main" basedir="../">
<!-- 项目名称 --> <property name="proName" value="ejb3test" />
<!-- Bea Weblogic 安装目录 --> <property name="bea.home" value="D:\bea" /> <property name="bea.server.lib" value="${bea.home}/wlserver_10.0/server/lib" /> <property name="domain.name" value="base_domain" />
<!-- JRE --> <property name="jre.home" value="D:\Java\jre1.5.0_12" />
<!-- 编译目录 --> <property name="build" value="Build" />
<!-- 指定输出目录 --> <property name="out" value="D:/out" />
<!-- 编译库 --> <path id="classpath">
<!-- JRE.lib --> <pathelement location="${jre.home}/lib" /> <pathelement location="${jre.home}/lib/ext" /> <fileset dir="${jre.home}/lib"> <include name="*.jar" /> <include name="ext/*.jar" /> </fileset>
<!-- JBossEJB3.lib --> <pathelement location="${bea.server.lib}" /> <fileset dir="${bea.server.lib}"> <include name="*.jar" /> </fileset>
</path>
<!-- Java编译库 --> <path id="java">
<!-- Java库 --> <fileset file="${build}/out/lib/${proName}_java.jar" />
</path>
<!-- EJB编译库 --> <path id="ejb">
<!-- Java库 --> <fileset file="${build}/out/${proName}_ejb.jar" />
</path>
<!-- Java编译打包 --> <target name="java">
<echo message="Java编译打包开始 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
<!-- 编译 --> <javac srcdir="Java/JavaSource" destdir="${build}/java"> <classpath refid="classpath" /> </javac>
<!-- 打包 --> <mkdir dir="${build}/out/lib" /> <jar basedir="${build}/java" jarfile="${build}/out/lib/${proName}_java.jar" />
<echo message="Java编译打包结束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
</target>
<!-- EJB编译打包 --> <target name="ejb" depends="java">
<echo message="EJB编译打包开始 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
<!-- 编译 --> <javac srcdir="EJB3/JavaSource" destdir="${build}/ejb"> <classpath refid="classpath" /> <classpath refid="java" /> </javac>
<!-- 复制配置文件 --> <copy todir="${build}/ejb/META-INF"> <fileset dir="EJB3/META-INF" /> </copy>
<!-- 打包 --> <jar basedir="${build}/ejb" jarfile="${build}/out/${proName}_ejb.jar"> <manifest> <attribute name="Class-Path" value="lib/${proName}_java.jar" /> </manifest> </jar>
<echo message="EJB编译打包结束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
</target>
<!-- Web编译打包 --> <target name="web" depends="ejb">
<echo message="Web编译打包开始 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
<!-- 复制web内容目录 --> <copy todir="${build}/web"> <fileset dir="WebContext" /> </copy>
<!-- 编译Java源代码 --> <delete dir="${build}/web/WEB-INF/classes" /> <mkdir dir="${build}/web/WEB-INF/classes" /> <javac srcdir="${build}/web/JavaSource" destdir="${build}/web/WEB-INF/classes"> <classpath refid="classpath" /> <classpath refid="java" /> <classpath refid="ejb" /> </javac>
<!-- 打包Java源代码 --> <delete dir="${build}/web/WEB-INF/lib" /> <mkdir dir="${build}/web/WEB-INF/lib" /> <jar basedir="${build}/web/WEB-INF/classes" jarfile="${build}/web/WEB-INF/lib/${proName}_servlet.jar" />
<!-- 复制EJB包到Web库 --> <copy todir="${build}/web/WEB-INF/lib" file="${build}/out/${proName}_ejb.jar" />
<!-- 打包web目录 --> <delete dir="${build}/web/JavaSource" /> <delete dir="${build}/web/WEB-INF/classes" /> <jar basedir="${build}/web" jarfile="${build}/out/${proName}_web.war"> <manifest> <attribute name="Class-Path" value="lib/${proName}_java.jar" /> </manifest> </jar>
<echo message="Web编译打包结束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
</target>
<!-- 企业包打包 --> <target name="ear" depends="web">
<echo message="企业包打包开始 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
<!-- 复制Java包、ejb包、web包 --> <copy todir="${build}/ear"> <fileset dir="${build}/out"> <include name="lib/${proName}_java.jar" /> <include name="${proName}_ejb.jar" /> <include name="${proName}_web.war" /> </fileset> </copy>
<!-- 复制配置文件 --> <copy todir="${build}/ear/META-INF"> <fileset dir="App/META-INF" /> </copy>
<!-- 打包 --> <jar basedir="${build}/ear" jarfile="${build}/out/${proName}_ear.ear" />
<echo message="企业包打包结束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
</target>
<!-- 初始化 为编译初始化 --> <target name="init">
<echo message="初始化开始 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
<!-- 创建java编译目录 --> <mkdir dir="${build}/java" />
<!-- 创建ejb编译目录 --> <mkdir dir="${build}/ejb" />
<!-- 创建web编译目录 --> <mkdir dir="${build}/web" />
<!-- 创建应用程序编译目录 --> <mkdir dir="${build}/ear" />
<!-- 创建编译输出目录 --> <mkdir dir="${build}/out" />
<echo message="初始化结束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
</target>
<!-- 清理项目 清理项目中编译产生的文件和目录 --> <target name="clear">
<echo message="清理项目开始 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
<!-- 删除java编译目录 --> <delete dir="${build}/java" />
<!-- 删除ejb编译目录 --> <delete dir="${build}/ejb" />
<!-- 删除web编译目录 --> <delete dir="${build}/web" />
<!-- 删除应用程序编译目录 --> <delete dir="${build}/ear" />
<!-- 删除编译输出目录 --> <delete dir="${build}/out" />
<echo message="清理项目结束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
</target>
<!-- 默认运行任务 编译、发布应用程序 --> <target name="main" depends="clear,init,ear">
<echo message="编译打包项目开始 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
<!-- 发布到自动编译的目录 --> <delete file="${bea.home}/user_projects/domains/${domain.name}/autodeploy/${proName}_ear.ear" /> <copy todir="${bea.home}/user_projects/domains/${domain.name}/autodeploy"> <fileset file="${build}/out/${proName}_ear.ear" /> </copy>
<!-- 输出到指定目录 --> <delete file="${out}/${proName}_ear.ear" /> <copy todir="${out}"> <fileset file="${build}/out/${proName}_ear.ear" /> </copy>
<echo message="编译打包项目结束 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" />
</target>
</project> ----------------------------------------------------------------------- 文件中需要注意的有以下几点: 1.[<property name="bea.home" value="D:\bea" />],这里表示你安装的weblogic的路径,其中[value]的设定根据自己实际情况设定; 2.[<property name="domain.name" value="base_domain" />],这里是你创建的域的名字,也是根据实际情况设定; 3.[<property name="jre.home" value="D:\Java\jre1.5.0_12" />],JRE的路径,根据实际情况设定; 4.[<property name="out" value="D:/out" />],一个指定的外部输出目录,要创建这个目录。
如果你已经安装了Ant,可以创建一个Bat文件。 文件地址:[Build/build.bat] 内容如下: ----------------------------------------------------------------------- F: cd F:\Epd\Workshop4WP\EJB3Test\Build %ANT_HOME%\bin\ant -file build.xml pause ----------------------------------------------------------------------- 根据实际情况,模仿编写。
4.创建EJB3
创建一个EJB3现在已经变得非常容易,你只需要加一个接口,并定义业务方法,然后再创建一个类文件,实现改接口,并作一些标签,以表示它是EJB,就可以了!
创建一个EJB的接口: 文件路径:[EJB3/JavaSource/com/mh/ejb3/test/HelloWorldLocal.java] 包:com.mh.ejb3.test 接口名称:HelloWorldLocal 内容如下 ----------------------------------------------------------------------- /** * */ package com.mh.ejb3.test;
/** * @author moshco zhu * */ public interface HelloWorldLocal {
public String sayHello();
}
-----------------------------------------------------------------------
创建Bean类: 文件路径:[EJB3/JavaSource/com/mh/ejb3/test/HelloWorldLocalBean.java] 包:com.mh.ejb3.test 类名:HelloWorldLocalBean EJB类型:无状态会话bean EJB实现接口类型:本地接口 内容如下: ----------------------------------------------------------------------- /** * */ package com.mh.ejb3.test;
import javax.ejb.Local; import javax.ejb.Stateless;
/** * @author moshco zhu * @Stateless:表示无状态会话Bean * @Local(HelloWorldLocal.class):实现本地接口,括号中是表示实现的本地接口 * */ @Stateless @Local(HelloWorldLocal.class) public class HelloWorldLocalBean implements HelloWorldLocal { public String sayHello() {
String strReult = "Hello,world!";
return strReult; }
} -----------------------------------------------------------------------
修改文件[WebContext/WEB-INF/web.xml] ----------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?>
<!-- version="2.4"这一部分不可以顺便改动,改动容易造成发布错误 --> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- web项目发布名称 --> <display-name>ejb3test</display-name>
<!-- 默认文件列表 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list>
<!-- ----------------------- 新加的部分 -------------------------- --> <!-- 定义引用一个ejb3的本定接口 --> <ejb-local-ref> <!-- EJB的引用名称 --> <ejb-ref-name>HelloWorldLocalBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <!-- 因为是EJB3所有不能有这一部分 --> <!-- <local-home></local-home> --> <local>com.mh.ejb3.test.HelloWorldLocal</local> <ejb-link>ejb3test_ejb.jar#HelloWorldLocalBean</ejb-link> </ejb-local-ref> <!-- ----------------------- 新加的部分 -------------------------- -->
</web-app> ----------------------------------------------------------------------- 因为我们使用的是本地会话Bean,本地会话Bean在同一个weblogic server中的web容器中使用,是需要这样引用一下的。记住,如果不在同一个weblogic server中的其它地方,是没有办法使用这个本地会话Bean的。
创建一个Servlet,使用这个本地会话Bean。 文件路径:[WebContext/JavaSource/com/mh/servlet/test/CommonSV.java] 包:com.mh.servlet.test 类名:CommonSV 内容如下: ----------------------------------------------------------------------- package com.mh.servlet.test;
import java.io.IOException; import java.io.PrintWriter; import java.util.Properties;
import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import com.mh.ejb3.test.HelloWorldLocal;
public class CommonSV extends HttpServlet {
@Override public void init() throws ServletException { // TODO 自动生成方法存根 super.init(); }
@Override public void destroy() { // TODO 自动生成方法存根 super.destroy(); }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doWork(request, response); }
@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doWork(request, response); }
/** * @描述:公共处理方法 * * @param strJNDI * @return * @throws Excep */ private void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取输出对象 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); // 设置输出编码 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); // 结果值 String message = "Test:<br><hr size='1'>";
try {
// 获取参数 String strPara = (String) request.getParameter("dowith");
// 处理运行 if (strPara != null && strPara.equals("HelloworldLocal")) { // 通过JNDI获取对象 HelloWorldLocal helloLocal = (HelloWorldLocal) getEJBObject("java:comp/env/HelloWorldLocalBean"); message += helloLocal.sayHello(); }
} catch (Exception e) { e.printStackTrace(); message += e.toString(); } finally { }
// 输出 out.print(message); out.flush(); out.close(); }
/** * @功能 获取EJB对象 * * @param strJNDI * @return * @throws Exception */ private Object getEJBObject(String strJNDI) throws Exception {
// 创建属性对象 Properties props = new Properties(); props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); props.setProperty(Context.PROVIDER_URL, "t3://localhost:7001");
// 创建上下文环境对象 InitialContext ctx; ctx = new InitialContext(props);
// 本地接口 Object oEJB = ctx.lookup(strJNDI);
// 返回函数值 return oEJB; }
} ----------------------------------------------------------------------- 注意上面引用本地会话Bean的JNDI是这样[java:comp/env/HelloWorldLocalBean]的,这个JNDI在服务器的JNDI树中是找不到的。这里的[HelloWorldLocalBean]与[web.xml]中的[<ejb-ref-name>HelloWorldLocalBean</ejb-ref-name>]保持一致。 关于JNDI树的查看: 1.启动weblogic server; 2.打开浏览器,进入网址[http://localhost:7001/console/login/LoginForm.jsp],输入你创建域的时候输入的用户名和密码; 3.选择[域结构]->[环境]->[服务器],点击服务器名称,进入服务器管理页面,点击[查看JNDI树],弹出的窗体显示的是服务器所有的JNDI。
修改文件[WebContext/WEB-INF/web.xml],定义刚创建的servlet。 ----------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?>
<!-- version="2.4"这一部分不可以顺便改动,改动容易造成发布错误 --> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- web项目发布名称 --> <display-name>ejb3test</display-name>
<!-- 默认文件列表 --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list> <!-- ----------------------- 新加的部分 -------------------------- --> <!-- 定义一个Servlet --> <servlet> <servlet-name>CommonSV</servlet-name> <servlet-class>com.mh.servlet.test.CommonSV</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>CommonSV</servlet-name> <url-pattern>/sv/CommonSV.do</url-pattern> </servlet-mapping> <!-- ----------------------- 新加的部分 -------------------------- -->
<!-- 定义引用一个ejb3的本定接口 --> <ejb-local-ref> <!-- EJB的引用名称 --> <ejb-ref-name>HelloWorldLocalBean</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <!-- 因为是EJB3所以不能有这一部分 --> <!-- <local-home></local-home> --> <local>com.mh.ejb3.test.HelloWorldLocal</local> <ejb-link>ejb3test_ejb.jar#HelloWorldLocalBean</ejb-link> </ejb-local-ref>
</web-app> -----------------------------------------------------------------------
创建一个web默认的jsp欢迎页面。 文件路径:[WebContext/index.jsp] 内容如下: ----------------------------------------------------------------------- <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>EJB3测试</title> </head> <body>
<p> <center><a href="http://localhost:7001/console/" target="_blank">weblogic控制</a></center> </p> <hr size="1"> <p> <center><a href="<%=request.getContextPath() %>/sv/CommonSV.do?dowith=HelloworldLocal" target="_blank">EJB3测试:本地会话Bean</a></center> </p>
</body> </html> -----------------------------------------------------------------------
5.编译发布程序
打开文件[Build/build.xml],在[大纲]视图中,选中[project],右键选择[运行方式]->[Ant构建],等一会weblogic server会自动发布程序。你可以通过下面的地址访问[http://localhost:7001/ejb3test/]。
需要注意的是,你在发布程序的时候,记住不要在[控制中心](http://localhost:7001/console),让它处于[锁定编辑]状态,如果处于锁定编辑状态,系统自动发布程序会报告错误,发布失败。
6.总结与思考
1.EJB3大量使用注释定义,减少配置文件,大大简化了开发,这是它最明显的特点;
2.EJB3在weblogic中,编写本地会话Bean,在同一个weblogic server的低版本(web.xml的版本低于2.5)servlet中访问不能使用依赖注入的的方式,就是下面这样: ----------------------------------------------- @EJB private HelloWorld helloWorldLocal; ----------------------------------------------- 关于这个问题,会在下一编文档中详细介绍。
3.EJB3在weblogic中,访问本地会话Bean,只有两种可能:同一个weblogic server的servlet访问,需要在web.xml中引用定义;或者,同一个容器中的其它会话Bean使用依赖注入(或在配置文件ejb-jar.xml中定义引用)的方式访问。
|
阅读全文(6555) | 回复(2) | 编辑 | 精华 |
回复:在Weblogic 10中做EJB3的开发 之HelloWorld |
Scott(游客)发表评论于2007/12/13 10:19:54 | Ejb3要在web.xml里面配置吗?那样不是还不如像2.0那样直接在ejb-jar.xml里面配置了
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
回复:在Weblogic 10中做EJB3的开发 之HelloWorld |
tanxin(游客)发表评论于2008/1/14 21:43:58 | 真是非常不错的文章,辛苦了!
|
个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除 |
» 1 »
|