ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

jboss_ejb_rpc

2019-09-24 09:38:05  阅读:290  来源: 互联网

标签:调用 remote bean 接口 jboss rpc ejb local


eclipse远程调试jboss发布的pm.jar代码

也可以访问jboss  192.168.53.100:8080  , 点击 JMX Console登录, 查看发布的ejb服务

192.168.53.100:8080/jmx-console   如何查看密码?  jboss/server/default/conf/props/jmx-console-users.properties         admin  qaz.123

jboss/bin run.conf  8787端口,即远程断点调试的开关,去掉#,即开启了远程调试

1 相信很多人在团队使用远程调试时经常会遇到:

 Failed to connect to remote VM Connection Refuse

2. 起因:同组其他人独占本连接(同时只能有一个连接执行远程调试)

3. 方案:点击下图中的左数第5个按钮,"disconnect"

在eclipse中点击菜单项的“run”->“Debug Configurations”,在打开的Debug Configurations对话框中,双击“Remote Java Application”,右边会出现远程机器的设置项。在里面可以设置远程jboss的主机名和端口号,最后点击“debug”。

/jboss/bin目录下,启动jboss服务  sh run.sh &

EJB Local与Remote接口区别

如果你不是远程调用EJB的话,使用EJB时建议调用local接口,这样效率高,因为远程调用就意味着建立网络连接,效率必然不如local调用。 

local是本地接口,remote是远程接口。web层调用app层使用remote接口。session bean和entity bean之间调用使用的是local接口。不用说你也明白,remote接口对性能的影响很大。所以在程序设计的时候我们尽量用loacal接口,也就是facade模式。具体就是,web层调用app层的session bean,session bean在调用各个entity bean。就好比是打长途电话找5个人,你是准备给5个人分别通话(长途-remote)还是准备先和一人通话(长途-remote)然后在由这个人对另外4个(短途-local)分别通知?我想你会选择第二种情况(facade模式)。 

    local接口可以在与ejb同一个JVM环境中调用,但是不能对它进行远程调用,假设你的web容器与所需调用的ejb不在一台服务器上,或者不在同一个welogic server中时就不能调用local接口了,在jndi查找的时候不能查找local home,而要查找remote home,即必须调用远程接口


对于web服务和 ejb后台分离的项目, 什么时候需要定义 @Local(ILocalSettingOpertionService.class) ?

  会话bean之间需要内部调用, 可以将@remote中的某个方法 复制一份作为local, 即作为本地调用接口; 而对于绝大多数, 使用@remote就够了, 都是web层直接调用 远程接口

 

无状态会话bean         ISettingOpertionService性能选项远程调用接口

@Remote    //注解用来定义用于远程调用接口   , 用于web层(部署在tomcat下)调用jboss服务(类似于长途电话)

@Local     //注解用来定义用于本地调用接口, 用于会话bean之间的调用, 性能高(类似于短途电话)

 如果远程和本地调用 接口都写的话, 那么 需要在remote和local注解后追加  (IRemoteSettingOpertionService.class)   (ILocalSettingOpertionService.class) , 会话bean也要多实现(即实现2个接口), 会自动根据长途 /短途电话 来选择 最优的方式调用


@Stateless      //无状态会话bean
@RemoteBinding(jndiBinding = "com.datangmobile.lte.common.server.pm.itf.ISettingOpertionService/remote") 

//在Jboss 中要自定义JNDI 名称,可以使用@LocalBinding 和@RemoteBinding 注释,@LocalBinding 注释指定Session Bean 的Local 接口的JNDI 名称,@RemoteBinding 注释指定Session Bean 的Remote 接口的JNDI名称

public class SettingOpertionServiceBean implements ISettingOpertionService { //这里是实现了 远程调用接口

}

使用eclipse  右击项目——>Exprot——>EJB JAR file,设置jar的名字及路径即可, 部署到jboss的服务中,进行测试.

jar包部署位置?  在jboss/server/default/deploy/OMC.ear下的 pm.jar  fm.jar等

1.Jboss默认端口号是8080

直接访问 192.168.53.100:8080  就可以打开jboss首页

你就可以在 jboss 的管理平台查看她们的 JNDI ,访问 192.168.53.100:8080/jmx-console/  即可

(这里提示你输入密码), 密码在jboss安装路径下的

/jboss/server/default/conf/props/jmx-console-users.properties 中查看

密码是  admin=qaz.1234  直接登录即可

输入下面 URL http://localhost:8080/jmx-console/ , 就可以查看已经绑定的的JNDI Name

1、配置数据源 


 

<?xml version="1.0" encoding="UTF-8"?> 
<datasources> 
<local-tx-datasource> 
    <jndi-name>MySqlDS </jndi-name> 
    <connection-url>jdbc:mysql://localhost:3306/lw </connection-url> 
    <driver-class>com.mysql.jdbc.Driver </driver-class> 
    <user-name>root </user-name> 
    <password>rootpassword </password> 
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter </exception-sorter-class-name> 
    <metadata> 
      <type-mapping>mySQL </type-mapping> 
    </metadata> 
</local-tx-datasource> 
</datasources>

项目中的jndi.properties文件, 使用于 单元测试的. 测试jndi服务

这里顺便提及一下JNDI绑定的问题:
The Calculator bean will have two JNDI bindings for the remote and Local interface. By default, JBoss will use ejbName/local and ejbName/remote for the local and remote interfaces, respectively(各自地) .

用@LocalBinding和@RemoteBinding这两个标注就可以了。如上,如果我们在Calculator bean上标注@LocalBinding(jndiBinding="com.datangmobile.lte.common.server.pm.itf.ISettingOpertionService/local")和@RemoteBinding(jndiBinding="com.datangmobile.lte.common.server.pm.itf.ISettingOpertionService/remote")的话,

那么客户端调用就应该相应的改为ctx.lookup("myFirst/Local")和ctx.lookup("myFirst/remote")了。
(三). 编译,运行
好了,到此所有工作都已经完成了,编译运行吧。这里由于JBoss 可以热部署EJB3.0,所以先启动服务。这里可以到%JBOSS_HOME%\bin 下执行run命令,也可以在eclipse中,Window-->Show view-->Servers, 选中我们建立的jboss-4.2.0.CR1,然后右键start启动JBoss AS.

标签:调用,remote,bean,接口,jboss,rpc,ejb,local
来源: https://blog.csdn.net/qq_29883183/article/details/88065189

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有