ejb30+Weblogic+Jboss安装配置及入门例子图文详解.docx
- 文档编号:11472954
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:28
- 大小:3.86MB
ejb30+Weblogic+Jboss安装配置及入门例子图文详解.docx
《ejb30+Weblogic+Jboss安装配置及入门例子图文详解.docx》由会员分享,可在线阅读,更多相关《ejb30+Weblogic+Jboss安装配置及入门例子图文详解.docx(28页珍藏版)》请在冰豆网上搜索。
ejb30+Weblogic+Jboss安装配置及入门例子图文详解
EJB3.0+Jboss/Weblogic安装部署及入门示例
一、安装部署Jboss服务器:
1、去官网下载jboss-4.2.2.GA.zip或jboss-5.1.0.GA.zip版本直接解压安装,放至相应目录。
例如D:
\Myeclipse\jboss
2、安装完后请在“系统变量”里添加JBOSS_HOME变量,值为Jboss的安装路径。
如下图
3、如果启动jboss出现例外(出现error),先看看jboss所用端口8080有没有被占
。
可以下载端口查看器(ActivePorts)进行检查,确定不是端口被占用,那很大可能是你的JDK安装不正确。
如果端口被占用可至jboss安装目录下
jboss-5.1.0.GA.zip版本D:
\Myeclipse\jboss\server\default\deploy\jbossweb.sar目录
jboss-4.2.2.GA.zip版本目录为jboss\server\default\deploy\jboss-web.deployer下面找到
server.xml文件
它下面有个节点 connectionTimeout="20000"redirectPort="8443"/>,将端口改为例如: 8888 4、重新启动jboss服务器,启动服务点击JBoss安装目录bin下面的run.bat: 例如此处为: D: \Myeclipse\jboss\bin\run.bat 正常启动JBoss服务器出现下面的页面: 二、安装部署Weblogic服务器: 1、同样去官网下载weblogic10.0以上版本。 因为10以上版本才支持EJB3.0. 此处为11g的wls1031_win32.exe。 选择create: 把下面的勾去掉: 三、Jboss+EJB3.0入门示例: 1、打开Myeclipse8.5新建EJB项目,版本选择3.0 如图的EJBTest项目: 目录结构如图 二、编写相应代码: 在JBoss中: 第一种: 接口和实现类中分别配置@Remote和@Stateless 编写远程接口类: @Remote表示这是一个远程接口(注: @Local表示为本地接口) packagecom.tudou.ejb.session; importjavax.ejb.Remote; @Remote publicinterfaceSayHello{ publicStringsayHello(Stringname);//没有方法体 } SayHello.java。 实现类的命名规则是: 接口+Bean,如: SayHelloBean @Stateless表示的是无状态会话bean(注: @Stateful表示的是有状态会话bean) 如下: packagecom.tudou.ejb.session; importjavax.ejb.Stateless; @Stateless publicclassSayHelloBeanimplementsSayHello{ publicStringsayHello(Stringname){ return"你好,"+name; } } 第二种: 接口中不配置,只在实现类中配置@Remote和@Stateless packagecom.tudou.ejb.session; importjavax.ejb.Remote; importjavax.ejb.Stateless; packagecom.tudou.ejb.session; publicinterfaceSayHello{ publicStringsayHello(Stringname);//没有方法体 } @Stateless @Remote({SayHello.class})//此处可以只写@Remote publicclassSayHelloBeanimplementsSayHello{ publicStringsayHello(Stringname){ return"你好,"+name; } } 三、打包项目文件: 1.MyElispse打包向导(土豆推荐方式) 在Elispse开发环境下,可以通过向导进行打包。 右击项目名称,在跳出的菜单中 选择“导出”,在“导出”对话框选择“Jar文件”,在“选择要导出的资源”时,选择源 目录和用到的资源。 然后选择一个存放目录及文件名。 点“完成”就结束了打包。 图中存放于桌面上。 名为sayHello.jar 2.Ant打包任务 采用Ant进行打包是比较方便的,这是网上别人推荐的打包方式。 下面我们看一个简单 的打包任务。 当然,这人本人没有做过测试。 不过用于学习,特放于此处。 可以参考学习 xmlversion="1.0"? > 上面建立了一个名为jartest的Ant项目,默认的任务为default="jar",项目的路 径为build.xml文件所在目录 basedir="."。 应用编绎过后的class文件已经存在于应用的/build/classes/目录 下。 Ant定义了一个属性 “build.classes.dir”,他指向应用的/build/classes/目录。 务,description是描述信息。 任务中使用jar 命令把/build/classes/目录下的所有class文件打包进jar文件,同时也把应用下 的META-INF目录下的所有文件打 包进jar文件的META-INF目录。 打包后的jar文件存放在应用目录下。 文件名 为: ejbfile.jar 4.3.4如何进行WEB应用打包 一个Web应用发布到Jboss服务器时需要打成war包。 本节将介绍jar命令行及Ant任 务两种war文件的打包方 式。 1.在命令行下用jar命令进行war文件打包(土豆标注: 使用jar命令也可以打包成jar文件) 在打包前把文件存成以下结构: WEB应用根目录 |--**/*.jsp |--WEB-INF |--web.xml |--lib |--*.* |--classes |--**/*.class 在Dos窗口中进入到WEB应用根目录下,执行如下命令 jarcvfEJBTest.war* 此命令把WEB应用根目录下的所有文件及文件夹打包成EJBTest.war文件 例如WEB应用根目录在: D: \java\webapp\,命令输入如下: D: \java\webapp>jarcvfEJBTest.war* 2.在Ant任务中进行war文件打包 如果文件存放的结构如下面所示: WEB应用根目录 |--build.xml |--**/*.jsp |--WEB-INF |--web.xml |--lib |--*.* |--classes |--**/*.class 那么Ant的war文件打包任务如下: xmlversion="1.0"? > 任务中执行war打包操作,把应用下除了build.xml,/WEB-INF/web.xml之外的所有 文件夹及文件打进war包,同时把webxml="/WEB-INF/web.xml"作为web应用的 web.xml文件。 四: 创建java项目 【1】使用JBoss+EJB3.0 启动JBoss服务器,先配置如图 一旦发布成功,你就可以在jboss的管理平台查看她们的JNDI名,输入下面URL http: //localhost: 8080/jmx-console/点击service=JNDIView,查看EJB的JNDI名称。 在出现的页面中,找到“ListofMBeanoperations: ”栏。 点击”Invoke”按钮 找JNDIName界面 可以看见HelloWorld会话Bean的JNDI名,JNDI名的组成规则是“上层名称/ 下层名称“,每层之间以”/”分隔。 HelloWorld会话Bean的JNDI名 是: HelloWorldBean/remote。 HelloWorld会话Bean发布成功后,接下来介绍客户端如何访问她。 1、导包 为此工程添加ejb3.0jar包这些类包都可以在jboss安装目录的 client,/server/all/deploy/jboss-aop-jdk50.deployer,/server/all/deploy/ejb3.deployer,/lib/endorsed等文件夹下找到, 2、编写测试类Test: packagecom.tudou.ejbtest; importjava.util.Properties; importjavax.naming.InitialContext; importjavax.naming.NamingException; importcom.tudou.ejb.session.SayHello; publicclassTest{ /** *@paramargs */ publicstaticvoidmain(String[]args){ Propertiesp=newProperties(); p.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); p.put("java.naming.provider.url","localhost"); try{ InitialContextctx=newInitialContext(p); SayHellos=(SayHello)ctx.lookup("SayHelloBean/remote"); Stringsay=s.sayHello("tudou"); System.out.println(say); }catch(NamingExceptione){ e.printStackTrace(); } //上面赋值还可以写成 //p.setProperty("java.naming.factory.initial", //"org.jnp.interfaces.NamingContextFactory"); //p.setProperty("java.naming.factory.url.pkgs", //"org.jboss.naming: org.jnp.interfaces"); //p.setProperty("java.naming.provider.url","localhost"); } } 如果你没有在代码中配置而是在src文件夹下配置jndi.properties上面的main可以省略: publicstaticvoidmain(String[]args){ try{ InitialContextctx=newInitialContext(); SayHellos=(SayHello)ctx.lookup("SayHelloBean/remote"); Stringsay=s.sayHello("tudou"); System.out.println(say); }catch(NamingExceptione){ e.printStackTrace(); } } } 然后你必须在你项目的src目录下新建jndi.properties文件 如果你不知道里面的配置怎么写,你可以到JBoss安装目录下搜索jndi,可以找到在jboss\docs\examples\jca文件夹下有一个hajndi-jms-ds.xml的文件,在节点 java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming: org.jnp.interfaces java.naming.provider.url=${jboss.bind.address: localhost}: 1100 …... 你就可以找到它们相应的键和值了。 注: 配置文件每行必须最前写,等号两边不能有空格。 【2】使用Weblogic+EJB3.0 只需修改JBoss几处代码即可: 第一,配置Weblogic,这个可能稍微有点复杂,因为和JBoss相比。 1、首先BEAHome为Weblogic的安装根目录,此处为: 2、配置用户名及密码。 即安装时的用户和密码。 密码为8位纯数字。 3、配置域,如: base_domain或tudou_domain。 这个域就是安装时所写的那个。 密码纯8位数字密码。 修改EJB项目源码。 并用Weblogic发布。 一样导出为jar包。 一样需要导入EJBQWeblogicTest项目中。 (注: 此为土豆原创,沤心沥血测试得出! 测试通过! 请注意红色部分为修改部分) packagecom.tudou.ejb.session; importjavax.ejb.Remote; @Remote(value=SayHello.class)//此处可以只写@Romote publicinterfaceSayHello{ publicStringsayHello(Stringname);//没有方法体 } packagecom.tudou.ejb.session; importjavax.ejb.Stateless; @Stateless(mappedName="SayHelloBean")//此处必须配置mappedName指定jndi publicclassSayHelloBeanimplementsSayHello{ publicStringsayHello(Stringname){ return"你好,"+name; } } packagecom.tudou.ejbtest; importjava.util.Properties; importjavax.naming.Context; importjavax.naming.InitialContext; importjavax.naming.NamingException; importcom.tudou.ejb.session.SayHello; publicclassTest{ /** *@tudou */ publicstaticvoidmain(String[]args){ Propertiesp=newProperties(); //p.setProperty("java.naming.factory.initial", //"weblogic.jndi.WLInitialContextFactory"); //p.setProperty("java.naming.provider.url","t3: //localhost: 7001"); //此处配置的参数键值和JBoss不同。 p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); //t3好像是一种协议,它类似于http,snmp等(启动weblogic服务器时可以在控制台看到)。 但此处必须用t3,否则报错! p.put(Context.PROVIDER_URL,"t3: //localhost: 7001"); try{ InitialContextctx=newInitialContext(p); SayHellos=(SayHello)ctx .lookup("SayHelloBean#com.tudou.ejb.session.SayHello"); //注此处不像JBoss那样后面写的是/Remote或/Local。 Stringsay=s.sayHello("tudou"); System.out.println(say); }catch(NamingExceptione){ e.printStackTrace(); } } } 下面援引自网络(红色部分为需要注意部分): 在这里作者要重点说明一下EJBJNDI名称默认的命名规则,命名规则如下: 1>如果EJB打包进后缀为*.ear的J2EE发布文件,默认的JNDI名称是 访问本地接口: EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local 访问远程接口: EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote 例: EJBHelloWorld打包进名为HelloWorld.ear的J2EE应用,访问她远程接口的 JNDI名是: HelloWorld/HelloWorldBean/remote 2>如果EJB应用打包成后缀为*.jar的发布文件,默认的JNDI名称是 访问本地接口: EJB-CLASS-NAME/local 访问远程接口: EJB-CLASS-NAME/remote 例: HelloWorld应用打包成HelloWorld.jar文件,访问她远程接口的JNDI名称 是: HelloWorldBean/remote 另外有一点要注意: EJB-CLASS-NAME是不带包名的,如 com.foshanshop.ejb3.impl.HelloWorldBean只需取 HelloWorldBean。 4.5EJB3.0远程调用 在正式的生产环境下,大部分调用EJB的客户端所在的服务器都为独立的Tomcat或 Resin。 下面介绍如何在 独立的Tomcat服务器中调用Jboss中的EJB。 在独立的Tomcat服务器中调用EJB需要 有以下步骤: 1>根据应用的需要,把调用EJB所依赖的Jar包拷贝到tomcat下的/shared/lib目录 或WEB应用的 WEB-INF/lib下,所依赖的Jar一般在jboss安装目录的client,/server/all/deploy /jboss-aop-jdk50.deployer, /server/all/deploy/ejb3.deployer,/lib/endorsed等文件夹下。 下面的jar文件是必需的: [jboss安装目录]\client\jbossall-client.jar [jboss安装目录]\client\jboss-remoting.jar [jboss安装目录]\client\jboss-aop-jdk50-client.jar [jboss安装目录]\client\jboss-aspect-jdk50-client.jar [jboss安装目录]\client\jboss-ejb3-client.jar [jboss安装目录]\client\jboss-ejb3x.jar [jboss安装目录]\client\jboss-annotations-ejb3.jar 2>把调用的EJB接口拷贝到应用的/WEB-INF/classes/目录下,如果有包名,需要 把包和类一起拷过来。 注意,在部署web应用的服务器上,如果安装的是Tomcat服务器,它的安装路径不 能出现空格,如: D: \Tomcat5.0不能象D: \Tomcat5.0这样带空格的安装目录,否 则会出现下面的异常: java.rmi.UnmarshalException: errorunmarshalling arguments;nestedexceptionis: .MalformedURLException: noprotocol: 5.0/webapps/ROOT/WEB-INF /classes/]。 现在把上述的HelloWorldEJB程序实现远程调用: 打包好的EJB组件 部署在一台机器的Jobss服务器上,把服务器启动起来,在部署web应用的机器上按 照上述的两个步骤把相关jar文件和用到的接口类拷到相应的目录下,把Test.jsp: 文件中的 props.setProperty("java.naming.provider.url","localhost: 1099");这行的 localhost改为EJB组件部署机器的IP,把web应用的工程部署到Tomcat下,启动 Tomcat,就可以看到运行的结果了。 很拽の土豆欢迎交流 2011-4-23制作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ejb30 Weblogic Jboss 安装 配置 入门 例子 图文 详解