jboss_ejb_rpc

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的服务中,进行测试.

jboss_ejb_rpc

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

jboss_ejb_rpc

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  直接登录即可

jboss_ejb_rpc

jboss_ejb_rpc

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

1、配置数据源 

jboss_ejb_rpc
 jboss_ejb_rpc

<?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服务

jboss_ejb_rpc

这里顺便提及一下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.

上一篇:java – 我的耳朵无法找到ejb模块类


下一篇:java – JBoss 7.1无法部署战争