中山营销网站建设,杭州网站建设开发有限公司,wordpress博客主题模板免费,阿里巴巴国际站下载卖家版该jboss集成到eclipse 关掉Jboss控制台新闻Ctrlc#xff0c;在MyEclipse→Servers→Jboss可配置JBoss。通过ANT提高EJB应用的开发效率 在HelloWorld 增加ANT#xff0c;右击项目新建xml#xff1a;build.xml#xff0c;右击打开方式选择Ant .. 相应用进行编译、打包、公布、… 该jboss集成到eclipse 关掉Jboss控制台新闻Ctrlc在MyEclipse→Servers→Jboss可配置JBoss。 通过ANT提高EJB应用的开发效率 在HelloWorld 增加ANT右击项目新建xmlbuild.xml右击打开方式选择Ant .. 相应用进行编译、打包、公布、解公布 ?xml version1.0 encodingUTF-8? !--basedirz项目所在路径.代表在build.xml的所在路径-- project nameHelloWorld basedir. property namesrc.dir value${basedir}\src/property !--指的是系统变量-- property environmentenv/property property namejboss.home value${env.JBOSS_HOME}/property !--用于指定眼下JBoss使用的配置项-- property namejboss.server.config valuedefault/property !--用于编译源文件class类存放的文件夹-- property namebuild.dir value${basedir}\build/property !--ejb依赖的jar文件-- path idbuild.classpath fileset dir${jboss.home}\client include name*.jar/ /fileset pathelement location${build.dir}/ /path target nameprepare delete dir${build.dir}/delete mkdir dir${build.dir}/mkdir /target target namecompile dependsprepare description编译 !--对源文件进行编译。destdir编译后class存放文件夹-- javac srcdir${src.dir} destdir${build.dir} !--编译依赖的jar文件-- classpath refidbuild.classpath/classpath /javac /target target nameEJBjar dependscompile description创建EJB公布包 !--${ant.project.name}就是上面的name HelloWorld-- jar jarfile${basedir}\${ant.project.name}.jar fileset dir${build.dir} include name**/*.class/ /fileset /jar /target target namedeploy dependsEJBjar description公布EJB copy file${basedir}\${ant.project.name}.jar todir${jboss.home}\server\${jboss.server.config}\deploy/copy /target target nameundeploy description卸载ejb delete file${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar/delete /target /project 公布在servers视图启动Jboss。然后在build.xml的大纲视图右击deploy→run as → Ant .. 发现编码问题我项目是GBK把项目改成UTF-8就可以 卸载EJB要先停止Jboss在运行undeploy就可以 开发具有本地接口的无状态bean 之前我们介绍过远程接口。通过一个远程接口调用EJB的过程。首先client须要与EJB建立socket通信。在通信管道上它们须要来回发送IIOP协议信息由于数据要在网络进行传输存放数据的Java对象必须要进行序列化。在这个过程。有网络通信的开销、协议解析的开销、对象序列化的开销等。由于EJB是分布式技术。它同意client与EJB应用在不同机器上。所以这些性能开销也是必定的。 可是在实际开发中client与EJB应用执行在同一个JBoss中。这时候client訪问EJB是否有必要走上面的网络通信呢据我们所知这时候client与EJB是在同一个JVM内他们之间全然能够通过内存进行交互这样就能够避免网络通信的性能开销。既然我们都想到了这一点EJB专家组也想到了这一点所以引入了本地接口。通过本地接口调用EJB直接在内存中交互。这样就能避免因网络通信所造成的各种性能开销。可是有一点。大家必须注意仅仅有client与EJB应用在同一个JVM内执行的时候我们才干调用本地接口否则仅仅能调用远程接口。 仅仅要client与EJB公布在同一个JBoss内。我们就觉得他们是在同一个JVM。 client和EJB部署到同机器上面 将HelloWorldBean指定为本地接口(Remote改动为Local) Stateless Local(HelloWorld.class) public classHelloWorldBean implementsHelloWorld { 本地接口的无状态bean已经被开发出来了。 通过Ant的deploy部署到EJB中。 新建一个web Project 做为EJB的client。而且部署到Jboss中这样client和EJB就在同一个jvm中了。 新建Web ProjcetEJBClient部署到Jboss。 在用jsp调用EJB。新建test.jsp,将编码格式换成utf-8这样就能够通过本地接口訪问EJB了把HelloWorld项目引用进来右击项目Build Path→Conf…→Projects→add % pagelanguagejavaimportjava.util.*pageEncodingUTF-8% % pageimportjavax.naming.*,cn.hqu.ejb3.*% % String path request.getContextPath(); String basePath request.getScheme()://request.getServerName():request.getServerPort()path/; % !DOCTYPEHTMLPUBLIC -//W3C//DTDHTML 4.01 Transitional//EN html head basehref%basePath% titleMy JSPtest.jsp starting page/title metahttp-equivpragmacontentno-cache metahttp-equivcache-controlcontentno-cache metahttp-equivexpirescontent0 metahttp-equivkeywordscontentkeyword1,keyword2,keyword3 metahttp-equivdescriptioncontentThis is my page !-- linkrelstylesheet typetext/csshrefstyles.css -- /head body % try { InitialContextctx new InitialContext(); HelloWorldhelloworld (HelloWorld) ctx .lookup(HelloWorldBean/local); out.println(helloworld.sayHello(本地的苏志达)); }catch (NamingException e) { e.printStackTrace(); } % /body /html client应用开发完了。导出war文件将war文件复制到Jboss的公布文件夹下看控制台发现应用公布成功了能够通过MyEclipse部署项目到Jboss,启动Jboss就可以公布 http://localhost:8080/EJBClient/test.jsp 通过本地接口调用EJB成功了。web应用和EJB部署到同一个Jboss中的。在同一个jvm中。能够进行訪问。 client和EJB部署到不同机器上面。 新建一个本地接口在HelloWorld项目新建HelloWorldLocal接口。继承远程接口HelloWorld。 HelloWorldBean实现HelloWorldLocal和HelloWorld接口。 Stateless Remote(HelloWorld.class) Local(HelloWorldLocal.class) public class HelloWorldBean implements HelloWorld,HelloWorldLocal { Override public StringsayHello(String name) { return name说你好; } } 部署同一个机器上的时候优先调用本地不同机器上我们仅仅能通过远程接口訪问。 本地调用部署启动JBoss执行http://localhost:8080/EJBClient/test.jsp 远程调用 将HelloWorld的EJBClient类改为远程接口 HelloWorldhelloworld (HelloWorld) ctx.lookup(HelloWorldBean/remote); 部署公布执行Ant deploy启动Jboss执行main方法。 在client通过远程接口调用EJB如今他们是在不同JVM内的仅仅能通过远程接口訪问执行EJBCLient的mian方法。成功訪问到。 在实际应用中我们最好把本地接口和远程借口都实现出来。主要是能够解决能够公布在同一个Jboss或者不同Jboss都能够使用。 开发有状态bean 仅仅须要改动Stateless为Stateful就能够标注为有状态bean Stateful Remote(HelloWorld.class) Local(HelloWorldLocal.class) public class HelloWorldBean implementsHelloWorld,HelloWorldLocal { Override public StringsayHello(String name) { return name说你好。; } } Ant deploy部署 有状态和无状态在代码上需然区别不大。可是採用对bean的管理的技术的不一样的. Bean实例的两种管理技术 1.无状态bean使用实例池技术管理bean 2.有状态bean使用激活(activation)管理bean 每一个用户都有自己的Bean实例相当于有多少个用户就有多少个Bean实例为之服务。假设不採取不论什么机制这样必定会导致server资源严重消耗最后落个down机罢工。为了解决问题。EJB引入了激活机系统。该机构的原理来实现这是在EJBserver如果有必要节约资源。从内存中恢复bean示例。将举行它的会话状态序列化到磁盘他们占用内存释放。如果此时client正确EJB再次发起请求EJB再次实例化一个容器Bean示例并从硬盘的状态恢复在先前。 码http://pan.baidu.com/s/1gdGIi8V 转载于:https://www.cnblogs.com/yxwkf/p/5042703.html