以 Rumba3 为基础,新建一个 EJB Module ,并完成超速10 以上不足20功能。

【图文】EJB3_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
上传于||暂无简介
大小:102.50KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢2152人阅读
Maven(3)
基于EJB开发业务简介
在复杂的企业IT架构中 web模块主要用途其实在展现层,它接收到用户的请求后委托后端的 ejb 完成业务逻辑(将业务交由ejb处理,可方便地获得保障业务事务及分布式事务、多客户端调用等好处),然后将ejb的处理结果以可视化形式展现给用户,如此的分层架构可以方便地对ejb业务层实施可复用和分布式。
ejb通常都是jar文件,web通常是war文件,一般都是独立部署,但是,有的时候我们也希望将某些ejb和web打包的一起部署,这就是企业应用ear。
maven 支持 ear 的管理。
假设要完成的ear中包行一个ejb和一个web,名称分别为:ejb3和webdemo,两个模块独立开发完成后执行 install 安装到本地maven库,建立一个ear模块(其实就是普通的maven项目,只是设置pom打包类型&packaging&ear&/packaging&),如果要开发一个ejb,那么就设置&packaging&ejb&/packaging&。
1.开发一个ejb
名称ejb3,其pom大致为:
&?xml version=&1.0& encoding=&UTF-8&?&
&project xmlns=&http://maven.apache.org/POM/4.0.0&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&&
&artifactId&eden&/artifactId&
&groupId&com.conquer.eden&/groupId&
&version&1.0&/version&
&modelVersion&4.0.0&/modelVersion&
&packaging&ejb&/packaging&
&artifactId&ejb3&/artifactId&
&dependencies&
&dependency&
&groupId&javax.ejb&/groupId&
&artifactId&ejb-api&/artifactId&
&version&3.0&/version&
&scope&provided&/scope&
&/dependency&
&!--&dependency&--&
&!--&groupId&org.eclipse.persistence&/groupId&--&
&!--&artifactId&javax.persistence&/artifactId&--&
&!--&version&2.0.5&/version&--&
&!--&scope&provided&/scope&--&
&!--&/dependency&--&
&/dependencies&
&finalName&${artifactId}&/finalName&
&!--&groupId&org.apache.maven.plugins&/groupId&--&
&artifactId&maven-ejb-plugin&/artifactId&
&version&2.5&/version&
&configuration&
&ejbVersion&3.0&/ejbVersion&
&!--&filterDeploymentDescriptor&true&/filterDeploymentDescriptor&--&
&!-- this is false by default --&
&generateClient&true&/generateClient&
&!--用下面的方式进行 客户端生成定制--&
&clientIncludes&
&!-- 包含 test 下面的所有文件和文件夹 --&
&!--&clientInclude&test/**&/clientInclude&--&
&!-- 包含 com/example 下面所有的文件,PS:不含文件夹--&
&!--&clientInclude&com/example/*&/clientInclude&--&
&/clientIncludes&
&clientExcludes&
&!-- 不包含 com/example 下的所有文件--&
&!--&clientExclude&com/example/*&/clientExclude&--&
&!-- this will exclude all files and directories with the name sparrow under com/jack --&
&!--&clientExclude&com/jack/**/sparrow&/clientExclude&--&
&/clientExcludes&
&/configuration&
&/plugins&
&/project&
以上的pom文件需要注意的点:
1.打包类型:
&packaging&ejb&/packaging&
&artifactId&maven-ejb-plugin&/artifactId&
3.是否生成EJB客户端jar
&generateClient&true&/generateClient&
关于&generateClient&的介绍:
&generateClient&用于生成简单版的ejb客户端,通常只包含客户端使用到的接口而不包含实现类,
他的默认排除规则是:
**/*Bean.class**/*CMP.class**/*Session.class**/package.html
所以加入我们的实现类是以Bean结尾的话,在打包成的*-client.jar中会自动去除,
当然,该规则也可以定制,可以定制需要添加和排除的文件,如下:
&configuration&
&clientIncludes&
&!-- this will include all files and directories under com/foo/bar --&
&clientInclude&com/foo/bar/**&/clientInclude&
&!-- this will include all files and directories under com/foo/acme --&
&clientInclude&com/foo/acme/**&/clientInclude&
&!-- this will include all files under com/example --&
&clientInclude&com/example/*&/clientInclude&
&/clientIncludes&
&clientExcludes&
&!-- this will exclude all files under com/example --&
&clientExclude&com/example/*&/clientExclude&
&!-- this will exclude all files and directories with the name
sparrow under com/jack --&
&clientExclude&com/jack/**/sparrow&/clientExclude&
&/clientExcludes&
&/configuration&
最后:在模块中添加此client的依赖时候,其类型要指定为ejb-client,如
&dependency&
&groupId&com.conquer.eden&/groupId&
&artifactId&xaejb&/artifactId&
&version&1.0&/version&
&!--&classifier&client&/classifier&--&
&type&ejb-client&/type&
&/dependency&
官网参考:
http://maven.apache.org/plugins/maven-ejb-plugin/
http://maven.apache.org/plugins/maven-ejb-plugin/examples/generating-ejb-client.html
ejb的java代码:
public interface TestDAOEJB {
String insertData(String data) throws E
String insertData2(String data) throws E
String insertData3(String data) throws E
import javax.ejb.*;
import javax.naming.C
import javax.naming.InitialC
import javax.sql.DataS
import java.io.IOE
import java.sql.C
import java.sql.S
import java.util.P
//@Stateless
//@Stateless(mappedName = &TestDAOBean&)
@Remote(value = TestDAOEJB.class)
public class TestDAOBean implements TestDAOEJB {
private static String otherNode1;
private static String otherNode2;
Properties properties = new Properties();
properties.load(TestDAOBean.class.getResourceAsStream(&/config.properties&));
otherNode1 = properties.getProperty(&otherNode1&);
otherNode2 = properties.getProperty(&otherNode2&);
} catch (IOException e) {
e.printStackTrace();
* CREATE TABLE wangpl(name VARCHAR2(200))
@TransactionAttribute(TransactionAttributeType.REQUIRED)//这是默认值,可以省略,或修改为其它事务策略
public String insertData(String data) throws Exception {
String returnString = &insertData-OK&;
Connection con =
Statement statement =
DataSource dataSource = (DataSource) new InitialContext().lookup(&DataSource1&);
con = dataSource.getConnection();
statement = con.createStatement();
String sql = &INSERT INTO wangpl VALUES('& + data + &:insertData')&;
statement.execute(sql);
} finally {
// close xxx
// 调用远程节点
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, &com.xxx.RemoteInitialContextFactory&);
p.put(Context.PROVIDER_URL, otherNode1);
InitialContext ctx = new InitialContext(p);
TestDAOEJB remote = (TestDAOEJB) ctx.lookup(&TestDAOBeanRemote&);
remote.insertData2(data + &1&);
return returnS
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public String insertData2(String data) throws Exception {
String returnString = &insertData2-OK&;
Connection con =
Statement statement =
DataSource dataSource = (DataSource) new InitialContext().lookup(&DataSource1&);
con = dataSource.getConnection();
statement = con.createStatement();
String sql = &INSERT INTO wangpl VALUES('& + data + &:insertData2')&;
statement.execute(sql);
} finally {
// close xxx
// 调用远程ejb
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, &com.xxx.RemoteInitialContextFactory&);
p.put(Context.PROVIDER_URL, otherNode2);
InitialContext ctx = new InitialContext(p);
TestDAOEJB remote = (TestDAOEJB) ctx.lookup(&TestDAOBeanRemote&);
remote.insertData3(data + &1&);
if (data.equals(&11&)) {
throw new RuntimeException(&************* Runtime Exception **************&);
return returnS
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public String insertData3(String data) throws Exception {
String returnString = &insertData3-OK&;
Connection con =
Statement statement =
DataSource dataSource = (DataSource) new InitialContext().lookup(&DataSource1&);
con = dataSource.getConnection();
statement = con.createStatement();
String sql = &INSERT INTO wangpl VALUES('& + data + &:insertData3')&;
statement.execute(sql);
} finally {
// close xxx
if (data.equals(&211&)) {
throw new RuntimeException(&************* Runtime Exception **************&);
return returnS
2.开发web模块
其pom大致如下:
&project xmlns=&http://maven.apache.org/POM/4.0.0& xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&&
&artifactId&eden&/artifactId&
&groupId&com.conquer.eden&/groupId&
&version&1.0&/version&
&modelVersion&4.0.0&/modelVersion&
&artifactId&webdemo&/artifactId&
&packaging&war&/packaging&
&name&webdemo&/name&
&finalName&${artifactId}&/finalName&
&dependencies&
&dependency&
&groupId&javax.servlet&/groupId&
&artifactId&javax.servlet-api&/artifactId&
&version&3.1.0&/version&
&scope&provided&/scope&
&/dependency&
&dependency&
&groupId&com.conquer.eden&/groupId&
&artifactId&ejb3&/artifactId&
&version&1.0&/version&
            &!--&classifier&client&/classifier&--&
            &type&ejb-client&/type&
         &/dependency&
&/dependencies&
&/project&
以上pom,要注意的是添加ejb的client依赖,指明类型是:&type&ejb-client&/type&
web层业务代码 ,可以使用 @EJB& @Resource 的注解方式,或者手工: new InitialContext(xx)来访问ejb。
其pom文件为:
&?xml version=&1.0& encoding=&UTF-8&?&
&project xmlns=&http://maven.apache.org/POM/4.0.0&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&&
&artifactId&eden&/artifactId&
&groupId&com.conquer.eden&/groupId&
&version&1.0&/version&
&modelVersion&4.0.0&/modelVersion&
&packaging&ear&/packaging&
&artifactId&ear&/artifactId&
&dependencies&
&dependency&
&groupId&com.conquer.eden&/groupId&
&artifactId&ejb3&/artifactId&
&version&1.0&/version&
&type&ejb&/type&
&/dependency&
&dependency&
&groupId&com.conquer.eden&/groupId&
&artifactId&webdemo&/artifactId&
&version&1.0&/version&
&type&war&/type&
&/dependency&
&/dependencies&
&finalName&${artifactId}&/finalName&
&artifactId&maven-ear-plugin&/artifactId&
&version&2.10&/version&
&configuration&
&!--&generateModuleId&true&/generateModuleId&--&
&!--指定打包范围,避免无用jar混乱加入--&
&!--&packagingIncludes&META-INF/**,**/acme-*.jar,**/acme-*.war&/packagingIncludes&--&
&!--&packagingExcludes&&/packagingExcludes&--&
&!--打包指定目录lib--&
&defaultLibBundleDir&lib/&/defaultLibBundleDir&
&!--将多个war的共享包提取到父级别--&
&skinnyWars&true&/skinnyWars&
&!--&includeLibInApplicationXml&true&/includeLibInApplicationXml&--&
&!--jboss 定制--&
&!--&jboss&--&
&!--&version&5&/version&--&
&!--&module-order&strict&/module-order&--&
&!--&unauthenticated-principal&guest&/unauthenticated-principal&--&
&!--&loader-repository&com.foo:loader=foo-application-1.0.ear&/loader-repository&--&
&!--&/jboss&--&
&!--jarModule:用于添加第三方库,配合includeInApplicationXml,可使其像一个开发的模块--&
&jarModule&
&!--&groupId&com.conquer.eden&/groupId&--&
&!--&artifactId&ejb3&/artifactId&--&
&!--&bundleFileName&ejb3.jar&/bundleFileName&--&
&!--&includeInApplicationXml&true&/includeInApplicationXml&--&
&!--&bundleDir&APP-INF/lib&/bundleDir& 只更改位置,名称保持不变--&
&!--&uri&APP-INF/lib/anotherName-1.2.3.jar&/uri& 可定制位置和名称,需要指定名称--&
&!--&excluded&true&/excluded&--&
&!--&moduleId&ejb3-id&/moduleId&--&
&/jarModule&
&ejbModule&
&groupId&com.conquer.eden&/groupId&
&artifactId&ejb3&/artifactId&
&bundleFileName&ejb3.jar&/bundleFileName&
&/ejbModule&
&webModule&
&groupId&com.conquer.eden&/groupId&
&artifactId&webdemo&/artifactId&
&bundleFileName&webdemo.war&/bundleFileName&
&!--&moduleId&webdemo-id&/moduleId&--&
&/webModule&
&/modules&
&!--&security&--&
&!--&security-role id=&SecurityRole_1234&&--&
&!--&role-name&manager&/role-name&--&
&!--&/security-role&--&
&!--&security-role id=&SecurityRole_5678&&--&
&!--&description&My cool description&/description&--&
&!--&role-name id=&RoleName_12&&teller&/role-name&--&
&!--&/security-role&--&
&!--&/security&--&
&!--&version&6&/version&--&
&!--&env-entries&--&
&!--&env-entry&--&
&!--&description&A complete entry.&/description&--&
&!--&env-entry-name&complete&/env-entry-name&--&
&!--&env-entry-type&java.lang.Integer&/env-entry-type&--&
&!--&env-entry-value&4&/env-entry-value&--&
&!--&/env-entry&--&
&!--&env-entry&--&
&!--&env-entry-name&no-type&/env-entry-name&--&
&!--&env-entry-value&4&/env-entry-value&--&
&!--&/env-entry&--&
&!--&env-entry&--&
&!--&env-entry-name&no-value&/env-entry-name&--&
&!--&env-entry-type&java.lang.String&/env-entry-type&--&
&!--&/env-entry&--&
&!--&/env-entries&--&
&/configuration&
&/plugins&
&/project&
以上pom要注意的是:
1.添加的两个依赖一个是ejb,一个是war包,指明的类型分别是:
&type&ejb&/type&和&type&war&/type&
2.EAR的打包插件
&artifactId&maven-ear-plugin&/artifactId&
3.添加的ejb和war需要分别指明:&ejbModule& 和
&webModule& 并且都可以定制打进ear的名称,通过:&bundleFileName&
执行ear模块的package目标或执行ear模块maven的ear:ear可完成 ear的打包工作。
关于 maven-ear-plugin ,官网参考:http://maven.apache.org/plugins/maven-ear-plugin/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:160441次
积分:2623
积分:2623
排名:第10108名
原创:120篇
评论:17条
文章:23篇
阅读:11337
(1)(1)(3)(2)(17)(12)(1)(3)(1)(1)(6)(2)(5)(1)(8)(3)(6)(1)(1)(1)(1)(3)(1)(2)(9)(5)(6)(24)3742人阅读
JBoss中的部署
部署目录:[JBOSS_HOME]/server/config-name/deploy ,JBoss不断的扫描目录的变化
你可以把下列文件拷贝到此目录下:
任何 jar库(其中的类将被自动添加到 JBoss的 classpath 中)
WAR (Web Appliction aRrchive)
EAR (Enterprise Application aRchive)
包含 JBoss MBean 定义的 XML文件
包含 EJB JAR、WAR 或者 EAR 的解压缩内容,并以.jar、.war或者.ear结尾的目录
要重新部署任何上述文件, 用新版本的文件覆盖以前的就可以了。JBoss会根据比较文件的时间发现改变,然后部署新的文件。
在单独的 Tomcat 或 J2SE 中调用 EJB
根据应用的需要,把调用EJB所依赖的Jar包拷贝Classpath下
把 EJB 接口拷贝Classpath
客户端访问 EJB时必须明确设置 InitialContext环境属性
Properties props = new Properties();
props.setProperty(&java.naming.factory.initial&,&org.jnp.interfaces.NamingContextFactory&);
props.setProperty(&java.naming.provider.url&,&localhost:1099&);
props.setProperty(&java.naming.factory.url.pkgs&,&org.jboss.naming&);
InitialContext ctx = newInitialContext(props);//如果客户端和jboss运行在同一个jvm,不需要传入props,也还可以在应用的 classpath下放置一个 jndi.properties 文件
在 JBOSS 中的 WEB应用调用 EJB
在Jboss下发布 WEB 应用,需要把 WEB应用打包成 war文件。另外在此环境下调用EJB不需要把EJB 的接口类放入/WEB-INF/classes/目录中,否则在调用 Stateful Bean 就会发生类型冲突,引发下面的例外。
java.lang.ClassCastException: $Proxy84
org.apache.jsp.StatefulBeanTest_jsp._jspService(org.apache.jsp.StatefulBeanTest_jsp:55)
发布在 Jboss下的客户端不需要明确设置 JNDI访问的上下文环境,可以直接通过 InitialContext ctx = newInitialContext()获得上下文环境,容器会自动赋给 InitialContext正确的环境
要发布 EJB 时必须把她打成*.jar文件,一个 EJB 打包后的目录结构如下
EJB 应用根目录
| -- com (你的.class文件)
| -- META-INF
| -- MANIFEST.MF(如果使用工具打包,该文件由工具自动生成)
&?xml version=&1.0&?&
&project name=&jartest&default=&jar& basedir=&.&&
&property name=&build.dir&value=&${basedir}/build& /&
&property name=&build.classes.dir&value=&${build.dir}/classes& /&
&target name=&jar& description=&打包成Jar&&
&jar jarfile=&${basedir}/ejbfile.jar&&
&fileset dir=&${build.classes.dir}&&
&include name=&**/*.class&/&
&/fileset&
&metainf dir=&${basedir}/META-INF&&
&include name=&**& /&
&/metainf&
&/project&
进行 WEB应用打包
一个 Web 应用发布到 Jboss 服务器时需要打成 war 包
WEB 应用根目录
| -- **/*. jsp
| --WEB-INF
| -- web.xml
| -- classes
| -- **/*.class
&?xml version=&1.0&?&
&project name=&wartest&default=&war& basedir=&.&&
&target name=&war& description=&创建 WEB 发布包&&
&war warfile=&${basedir}/EJBTest.war&webxml=&${basedir}/WEB-INF/web.xml&&
&classes dir=&${basedir}/WEB-INF/classes&&&include name=&**/*.class&/& &/classes&
&lib dir=&${basedir}/WEB-INF/lib&&&includename=&*.jar&/&&/lib&
&webinf dir=&${basedir}/WEB-INF&&&includename=&*.*&/&&/webinf&
&/project&
webxml 指明web.xml的位置,&classes&&指明 web的 classes 目录位置, &lib&指明 web 的 lib 目录位置, &webinf&指明 web 的 WEB-INF 目录位置
进行企业应用打包
一个完整的企业应用包含EJB模块和 WEB 模块,在发布企业应用时,我们需要把它打成*.ear文件,在打包前我们必须配置 application.xml 文件,该文件存放于打包后的 META-INF 目录。我们在 application.xml 文件中需要指定 EJB 模块和 WEB 模块的信息
一个 application.xml配置例子如下:
&application xmlns=&/xml/ns/j2ee&version=&1.4&
xmlns:xsi=&http://www.w3.org/2001/XMLSchema-instance&
xsi:schemaLocation=&/xml/ns/j2ee
/xml/ns/j2ee/application_1_4.xsd&&
&display-name&EJB3Sample Application&/display-name&
&web-uri&web.war&/web-uri&
&context-root&web&/context-root&
&ejb&ejb3.jar&/ejb&
&/application&
&web&指定 Web 模块,&ejb&指定 EJB 模块,Web 模块或者 EJB 模块都可以存在多个
一个企业应用打包后的目录结构应该如下
ear应用根目录
| -- ejb3.jar (你的 EJB 模块)
| -- web.war (你的 WEB 模块)
| -- META-INF
| -- MANIFEST.MF (如果使用工具打包,该文件由工具自动生成)
| -- application.xml
使用了第三方类库的 EJB打包
可以把第三方类库放入[JBOSS_HOME]\server\default\lib,不过此种方式重新部署 EJB应用时,第三方类库也要重新部署。适合放入应用服务器类路径的第三方类库通常是一些通用类库,如 JDBC 驱动。对于第三方类库最理想的选择是把他们放入 EJB Jar文件中。每一个 JAR 文件里都有一个manifest文件,这个文件由 jar工具自动创建,默认名字是 MANIFEST.MF。我们可以在 manifest文件中加入一个Class-Path
属性,引用它所依赖的 JAR 文件。我们可以手工编辑 manifest.mf 文件,在原有内容的基础上,添加Class-Path 属性。Class-Path 属性的值是用来搜索第三方类库的相对 URL。这个 URL总是相对于包含 Class-Path属性的组件。单个 Class-Path 属性内可以指定多个 URL,一个 manifest文件可以包含多个 Class-Path 属性。
假设本例 EJB 使用了两个第三方类库,名为:Upload.jar,Socket.jar,
修改后的 manifest.mf 文件内容如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_01-b08 (Sun MicrosystemsInc.)
Class-Path: Upload.jar Socket.jar
Class-Path: 与 Upload.jar之间有一空格分隔(缺少了空格就会发生找不到 jar文件),多个 jar文件之间需要用空格分隔。Class-Path 所在行还需要进行回车换行。
打完包后的目录结构
EJB 应用根目录
| -- com (注:ejb 类包)
| -- Upload.jar (注:第三方类库)
| -- Socket.jar (注:第三方类库)
| -- META-INF
| -- MANIFEST.MF(注:加入了 Class-Path 属性)
共用了第三方类库的 J2EE 应用打包
一个 J2EE 项目通常由多个 EJB 和 Web 应用构成,如果多个 EJB 及 Web 应用共用了一个第三方类库
假设一个 J2EE 项目含有两个 EJB 及一个 Web 应用,他们的文件名分别为:HelloWorld.jar,HelloChina.ja,MyEJBTest.war。这三个模块都使用了一个第三方类库,名为:Tools.jar
现在我们要做的是编辑这三个模块的 manifest.mf 文件,在原有内容的基础上,添加 Class-Path 属性。
三个模块的 jar文件修改后的 manifest.mf 文件内容如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_01-b08 (Sun MicrosystemsInc.)
Class-Path: Tools.jar
注意:Class-Path: 与 Tools.jar之间有一空格分隔(缺少了空格就会发生找不到 jar文件),Class-Path 所在行还需
要进行回车换行。
各个模块通过 manifest.mf 文件都能找到其所依赖的 Tools.jar文件。
打完包后的目录结构:
J2EE 应用根目录
| -- HelloWorld.jar
| -- META-INF
| -- MANIFEST.MF (注:加入了 Class-Path 属性, 引用它所依赖的 Tools.jar)
| -- HelloChina.jar
| -- META-INF
| -- MANIFEST.MF (注:加入了 Class-Path 属性, 引用它所依赖的 Tools.jar)
| -- MyEJBTest.war
| -- META-INF
| -- MANIFEST.MF (注:加入了 Class-Path 属性, 引用它所依赖的 Tools.jar)
| -- Tools.jar (注:第三方类库)
| -- META-INF
| --application.xml
| -- MANIFEST.MF(注:由工具自动生成,没有加入 Class-Path 属性)
如果第三方类库很多的情况下,显的有些零乱而不雅观可以建个文件夹专门用来存放第三方类库。如建个 lib 文件夹,把第三方类库放在此文件夹下。然后修改J2EE各模块的 manifest.mf 文件内容,修改后的内容如下:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_01-b08 (Sun MicrosystemsInc.)
Class-Path: lib/Tools.jar
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:385327次
积分:4424
积分:4424
排名:第4763名
原创:31篇
转载:146篇
评论:38条
(1)(2)(2)(1)(5)(1)(10)(2)(1)(1)(2)(1)(1)(1)(2)(3)(3)(4)(13)(25)(4)(16)(9)(11)(4)(5)(2)(5)(9)(18)(11)(2)C第3章 PowerDesigner的基本操作_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C第3章 PowerDesigner的基本操作
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢1598人阅读
阅读本文的前提条件是:
&1.你必须有Java编程的基本能力,并能熟练使用servlet;
&2.同时要能熟练并多次安装过weblogic server,了解安装的一些基本常识;
&3.熟练使用Eclipse开发工具开发Java程序。
1.Weblogic 的版本
&我使用的weblogic版本是Workshop for WebLogic 10,weblogic是从WebLogic 10.0的版本开始完全支持EJB3的。可是在Bea的主页上下载,下载地址是[.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=&& version=&1.4&
&&xmlns:xsi=&&
&&xsi:schemaLocation=& /xml/ns/j2ee
&&&!-- 引用程序名称 --&
&&&display-name&EIB3Test&/display-name&
&&&!-- 应用程序描述 --&
&&&description&EJB3 Test Application&/description&
&&&!-- EJB模块 --&
&&&module&
&&&&!-- EJB模块Jar包 --&
&&&&ejb&ejb3test_ejb.jar&/ejb&
&&&/module&
&&&!-- WEB模块 --&
&&&module&
&&&&&!-- web模块包 --&
&&&&&web-uri&ejb3test_web.war&/web-uri&
&&&&&!-- web模块根 就是 --&
&&&&&context-root&/ejb3test&/context-root&
&&&/module&
&&/application&
&-----------------------------------------------------------------------
&[WebContext/WEB-INF/web.xml]
&-----------------------------------------------------------------------
&&?xml version=&1.0& encoding=&UTF-8&?&
&&!-- version=&2.4&这一部分不可以随便改动,改动容易造成发布错误 --&
&&web-app version=&2.4& xmlns=&&
&&xmlns:xsi=&&
&&xsi:schemaLocation=&
&&&!-- 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&
&&&!-- Java编译库 --&
&&&path id=&java&&
&&&&!-- Java库 --&
&&&&fileset file=&${build}/out/lib/${proName}_java.jar& /&
&&&!-- EJB编译库 --&
&&&path id=&ejb&&
&&&&!-- Java库 --&
&&&&fileset file=&${build}/out/${proName}_ejb.jar& /&
&&&!-- 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&
&&&&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&
&&&&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]
&内容如下:
&-----------------------------------------------------------------------
&cd F:/Epd/Workshop4WP/EJB3Test/Build
&%ANT_HOME%/bin/ant -file build.xml
&-----------------------------------------------------------------------
&根据实际情况,模仿编写。
4.创建EJB3
&创建一个EJB3现在已经变得非常容易,你只需要加一个接口,并定义业务方法,然后再创建一个类文件,实现改接口,并作一些标签,以表示它是EJB,就可以了!
&创建一个EJB的接口:
&文件路径:[EJB3/JavaSource/com/mh/ejb3/test/HelloWorldLocal.java]
&包:com.mh.ejb3.test
&接口名称:HelloWorldLocal
&-----------------------------------------------------------------------
&package com.mh.ejb3.
& * @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.
&import javax.ejb.L
&import javax.ejb.S
& * @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 strR
&-----------------------------------------------------------------------
&修改文件[WebContext/WEB-INF/web.xml]
&-----------------------------------------------------------------------
&&?xml version=&1.0& encoding=&UTF-8&?&
&&!-- version=&2.4&这一部分不可以顺便改动,改动容易造成发布错误 --&
&&web-app version=&2.4& xmlns=&&
&&xmlns:xsi=&&
&&xsi:schemaLocation=&
&&&!-- 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.
&import java.io.IOE
&import java.io.PrintW
&import java.util.P
&import javax.naming.C
&import javax.naming.InitialC
&import javax.naming.NamingE
&import javax.servlet.ServletE
&import javax.servlet.http.HttpS
&import javax.servlet.http.HttpServletR
&import javax.servlet.http.HttpServletR
&import com.mh.ejb3.test.HelloWorldL
&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/charset=UTF-8&);
&&&PrintWriter out = response.getWriter();
&&&// 结果值
&&&String message = &Test:&br&&hr size='1'&&;
&&&&// 获取参数
&&&&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&);
&&&// 创建上下文环境对象
&&&InitialC
&&&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=&&
&&xmlns:xsi=&&
&&xsi:schemaLocation=&
&&&!-- 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.monSV&/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/ charset=GB18030& pageEncoding=&GB18030&%&
&&!DOCTYPE HTML PUBLIC &-//W3C//DTD HTML 4.01 Transitional//EN&&
&&meta http-equiv=&Content-Type& content=&text/ charset=GB18030&&
&&title&EJB3测试&/title&
&&center&&a href=&& target=&_blank&&weblogic控制&/a&&/center&
&&hr size=&1&&
&&center&&a href=&&%=request.getContextPath() %&/sv/CommonSV.do?dowith=HelloworldLocal& target=&_blank&&EJB3测试:本地会话Bean&/a&&/center&
&-----------------------------------------------------------------------
5.编译发布程序
&打开文件[Build/build.xml],在[大纲]视图中,选中[project],右键选择[运行方式]-&[Ant构建],等一会weblogic server会自动发布程序。你可以通过下面的地址访问[http://localhost:7001/ejb3test/]。
&需要注意的是,你在发布程序的时候,记住不要在[控制中心](),让它处于[锁定编辑]状态,如果处于锁定编辑状态,系统自动发布程序会报告错误,发布失败。
6.总结与思考
&1.EJB3大量使用注释定义,减少配置文件,大大简化了开发,这是它最明显的特点;
&2.EJB3在weblogic中,编写本地会话Bean,在同一个weblogic server的低版本(web.xml的版本低于2.5)servlet中访问不能使用依赖注入的的方式,就是下面这样:
&-----------------------------------------------
&private HelloWorld helloWorldL
&-----------------------------------------------
&关于这个问题,会在下一编文档中详细介绍。
&3.EJB3在weblogic中,访问本地会话Bean,只有两种可能:同一个weblogic server的servlet访问,需要在web.xml中引用定义;或者,同一个容器中的其它会话Bean使用依赖注入(或在配置文件ejb-jar.xml中定义引用)的方式访问。
全球第一款网络点验钞机诞生在浙江温州 ,点钞机/网络点钞机,通过客户端连接网络,云存储数据和网络验钞
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:45261次
排名:千里之外
原创:47篇
转载:13篇
评论:10条
(2)(7)(5)(3)(2)(2)(4)(2)(2)(7)(7)(17)}

我要回帖

更多关于 超速10 以上不足20 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信