1、ejb30+Weblogic+Jboss安装配置及入门例子图文详解EJB3.0+Jboss/Weblogic安装部署及入门示例一、安装部署Jboss服务器:1、去官网下载jboss-4.2.2.GA.zip或jboss-5.1.0.GA.zip版本直接解压安装,放至相应目录。例如D:Myeclipsejboss2、安装完后请在“系统变量”里添加JBOSS_HOME 变量,值为Jboss的安装路径。如下图3、如果启动jboss出现例外(出现error),先看看jboss所用端口8080有没有被占。可以下载端口查看器(Active Ports)进行检查,确定不是端口被占用,那很大可能是你的JDK安
2、装不正确。如果端口被占用可至jboss安装目录下jboss-5.1.0.GA.zip版本D:Myeclipsejbossserverdefaultdeployjbossweb.sar目录jboss-4.2.2.GA.zip版本目录为jbossserverdefaultdeployjboss-web.deployer下面找到server.xml文件它下面有个节点,将端口改为例如:88884、重新启动jboss服务器,启动服务点击JBoss安装目录bin下面的run.bat:例如此处为:D:Myeclipsejbossbinrun.bat正常启动JBoss服务器出现下面的页面:二、安装部署Webl
3、ogic服务器: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表示为本地接口)package com.tudou.ejb.session;import javax.ejb.Re
4、mote;Remotepublic interface SayHello public String sayHello(String name);/ 没有方法体SayHello.java 。实现类的命名规则是:接口+Bean ,如: SayHelloBeanStateless表示的是无状态会话bean(注:Stateful表示的是有状态会话bean)如下:package com.tudou.ejb.session;import javax.ejb.Stateless;Statelesspublic class SayHelloBean implements SayHello public St
5、ring sayHello(String name) return 你好, + name; 第二种:接口中不配置,只在实现类中配置Remote和Statelesspackage com.tudou.ejb.session;import javax.ejb.Remote;import javax.ejb.Stateless;package com.tudou.ejb.session;public interface SayHello public String sayHello(String name);/ 没有方法体StatelessRemote( SayHello.class )/此处可以只
6、写Remotepublic class SayHelloBean implements SayHello public String sayHello(String name) return 你好, + name; 三、打包项目文件:1.MyElispse打包向导(土豆推荐方式)在Elispse开发环境下,可以通过向导进行打包。右击项目名称,在跳出的菜单中选择“导出”,在“导出”对话框选择“Jar文件”,在“选择要导出的资源”时,选择源目录和用到的资源。然后选择一个存放目录及文件名。点“完成”就结束了打包。图中存放于桌面上。名为sayHello.jar2. Ant打包任务采用Ant进行打包是比
7、较方便的,这是网上别人推荐的打包方式。下面我们看一个简单的打包任务。当然,这人本人没有做过测试。不过用于学习,特放于此处。可以参考学习include name=*/*.上面建立了一个名为jartest的Ant项目,默认的任务为default=jar,项目的路径为build.xml文件所在目录basedir=. 。应用编绎过后的class文件已经存在于应用的/build/classes/目录下。Ant定义了一个属性“build.classes.dir”,他指向应用的/build/classes/目录。定义了一个名叫jar的任务,description是描述信息。任务中使用jar命令把/build
8、/classes/目录下的所有class文件打包进jar文件,同时也把应用下的META-INF目录下的所有文件打包进jar文件的META-INF目录。打包后的jar文件存放在应用目录下。文件名为:ejbfile.jar4.3.4如何进行WEB应用打包一个Web应用发布到Jboss服务器时需要打成war包。本节将介绍jar命令行及Ant任务两种war文件的打包方式。1.在命令行下用jar命令进行war文件打包(土豆标注:使用jar命令也可以打包成jar文件)在打包前把文件存成以下结构:WEB应用根目录| - */*. jsp| - WEB-INF| - web.xml| - lib| - *.*
9、| - classes| - */*.class在Dos窗口中进入到WEB应用根目录下,执行如下命令jar cvf EJBTest.war *此命令把WEB应用根目录下的所有文件及文件夹打包成EJBTest.war文件例如WEB应用根目录在: D:javawebapp ,命令输入如下:D:javawebapp jar cvf EJBTest.war *2.在Ant任务中进行war文件打包如果文件存放的结构如下面所示:WEB应用根目录|- build.xml|-*/*.jsp|- WEB-INF| - web.xml| - lib| - *.*| - classes| - */*.class那么
10、Ant的war文件打包任务如下: 定义一个名叫war的任务。任务中执行war打包操作,把应用下除了build.xml, /WEB-INF/web.xml之外的所有文件夹及文件打进war包,同时把webxml=/WEB-INF/web.xml作为web应用的web.xml文件。四:创建java项目【1】使用JBoss+EJB3.0启动JBoss服务器,先配置如图一旦发布成功,你就可以在jboss 的管理平台查看她们的JNDI名,输入下面URLhttp:/localhost:8080/jmx-console/点击service=JNDIView,查看EJB的JNDI名称。在出现的页面中,找到“Li
11、st of MBean operations:”栏。点击”Invoke”按钮找JNDI Name界面可以看见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/depl
12、oy/ejb3.deployer,/lib/endorsed等文件夹下找到, 2、编写测试类Test:package com.tudou.ejbtest;import java.util.Properties;import javax.naming.InitialContext;import javax.naming.NamingException;import com.tudou.ejb.session.SayHello;public class Test /* * param args */ public static void main(String args) Properties p
13、 = new Properties(); p.put(java.naming.factory.initial, org.jnp.interfaces.NamingContextFactory); p.put(java.naming.provider.url, localhost); try InitialContext ctx = new InitialContext(p); SayHello s = (SayHello) ctx.lookup(SayHelloBean/remote); String say = s.sayHello(tudou); System.out.println(sa
14、y); catch (NamingException e) 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); 如果你没有在代码
15、中配置而是在src文件夹下配置jndi.properties上面的main可以省略:public static void main(String args) try InitialContext ctx = new InitialContext(); SayHello s = (SayHello) ctx.lookup(SayHelloBean/remote); String say = s.sayHello(tudou); System.out.println(say); catch (NamingException e) e.printStackTrace(); 然后你必须在你项目的src
16、目录下新建jndi.properties文件如果你不知道里面的配置怎么写,你可以到JBoss安装目录下搜索jndi,可以找到在jbossdocsexamplesjca文件夹下有一个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:localho
17、st:1100.你就可以找到它们相应的键和值了。注:配置文件每行必须最前写,等号两边不能有空格。【2】使用Weblogic+EJB3.0只需修改JBoss几处代码即可:第一, 配置Weblogic,这个可能稍微有点复杂,因为和JBoss相比。1、 首先BEA Home为Weblogic的安装根目录,此处为:2、 配置用户名及密码。即安装时的用户和密码。密码为8位纯数字。3、配置域,如:base_domain或tudou_domain。这个域就是安装时所写的那个。密码纯8位数字密码。修改EJB项目源码。并用Weblogic发布。一样导出为jar包。一样需要导入EJBQWeblogicTest项目
18、中。(注:此为土豆原创,沤心沥血测试得出!测试通过!请注意红色部分为修改部分)package com.tudou.ejb.session;import javax.ejb.Remote;Remote(value = SayHello.class)/此处可以只写Romotepublic interface SayHello public String sayHello(String name);/ 没有方法体package com.tudou.ejb.session;import javax.ejb.Stateless;Stateless(mappedName = SayHelloBean)/此
19、处必须配置mappedName指定jndipublic class SayHelloBean implements SayHello public String sayHello(String name) return 你好, + name; package com.tudou.ejbtest;import java.util.Properties;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NamingException;import com.tudou.ejb.sess
20、ion.SayHello;public class Test /* * tudou */ public static void main(String args) Properties p = new Properties(); / p.setProperty(java.naming.factory.initial, / weblogic.jndi.WLInitialContextFactory); / p.setProperty(java.naming.provider.url, t3:/localhost:7001);/此处配置的参数键值和JBoss不同。 p.put(Context.IN
21、ITIAL_CONTEXT_FACTORY, weblogic.jndi.WLInitialContextFactory);/t3好像是一种协议,它类似于http,snmp等(启动weblogic服务器时可以在控制台看到)。但此处必须用t3,否则报错! p.put(Context.PROVIDER_URL, t3:/localhost:7001); try InitialContext ctx = new InitialContext(p); SayHello s = (SayHello) ctx .lookup(SayHelloBean#com.tudou.ejb.session.SayHe
22、llo);/注此处不像JBoss那样后面写的是/Remote或/Local。 String say = s.sayHello(tudou); System.out.println(say); catch (NamingException e) e.printStackTrace(); 下面援引自网络(红色部分为需要注意部分):在这里作者要重点说明一下EJB JNDI名称默认的命名规则,命名规则如下:1 如果EJB打包进后缀为*.ear的J2EE发布文件,默认的JNDI 名称是访问本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local访问远程接口:EAR-FIL
23、E-BASE-NAME/EJB-CLASS-NAME/remote例:EJB HelloWorld打包进名为HelloWorld.ear的J2EE应用,访问她远程接口的JNDI 名是:HelloWorld/HelloWorldBean/remote2 如果EJB应用打包成后缀为*.jar的发布文件, 默认的JNDI 名称是访问本地接口:EJB-CLASS-NAME/local访问远程接口:EJB-CLASS-NAME/remote例: HelloWorld应用打包成HelloWorld.jar文件,访问她远程接口的JNDI名称是:HelloWorldBean/remote另外有一点要注意:EJ
24、B-CLASS-NAME 是不带包名的,如com.foshanshop.ejb3.impl.HelloWorldBean只需取HelloWorldBean。4.5 EJB3.0远程调用在正式的生产环境下,大部分调用EJB的客户端所在的服务器都为独立的Tomcat或Resin 。下面介绍如何在独立的Tomcat服务器中调用Jboss中的EJB。在独立的Tomcat服务器中调用EJB需要有以下步骤:1 根据应用的需要,把调用EJB所依赖的Jar包拷贝到tomcat下的/shared/lib目录或WEB应用的WEB-INF/lib下,所依赖的Jar一般在jboss安装目录的client,/serve
25、r/all/deploy/jboss-aop-jdk50.deployer,/server/all/deploy/ejb3.deployer,/lib/endorsed等文件夹下。下面的jar文件是必需的:jboss安装目录clientjbossall-client.jarjboss安装目录clientjboss-remoting.jarjboss安装目录clientjboss-aop-jdk50-client.jarjboss安装目录clientjboss-aspect-jdk50-client.jarjboss安装目录clientjboss-ejb3-client.jarjboss安装目录
26、clientjboss-ejb3x.jarjboss安装目录clientjboss-annotations-ejb3.jar2 把调用的EJB接口拷贝到应用的/WEB-INF/classes/目录下,如果有包名,需要把包和类一起拷过来。注意,在部署web应用的服务器上,如果安装的是Tomcat服务器,它的安装路径不能出现空格,如:D:Tomcat5.0不能象D:Tomcat 5.0这样带空格的安装目录,否则会出现下面的异常:java.rmi.UnmarshalException: error unmarshallingarguments; nested exception is:.Malfor
27、medURLException: no protocol: 5.0/webapps/ROOT/WEB-INF/classes/。现在把上述的HelloWorld EJB程序实现远程调用:打包好的EJB组件部署在一台机器的Jobss服务器上,把服务器启动起来,在部署web应用的机器上按照上述的两个步骤把相关jar文件和用到的接口类拷到相应的目录下,把Test.jsp:文件中的props.setProperty(java.naming.provider.url, localhost:1099);这行的localhost改为EJB组件部署机器的IP,把web应用的工程部署到Tomcat下,启动Tomcat,就可以看到运行的结果了。很拽土豆 欢迎交流2011-4-23制作
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1