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.