远程调用EJB WEB服务器B不用做什么设置。个人观点:1、本地类调用ejb时初始化一下jboss的上下文环境,则可实现调用ejb(最理想)2、本地类通过RMI来调用远端ejb,如果你对ejb比较熟,应该会想到RMI通过以上两个方法肯定能实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般应用服务器之间的整合需要用配置文件。用RMI太复杂,而且效率以及可维护性都是未知数。 你可以用GOOGLE搜一下,应该有这方面的文章。 谁说用RMI太复杂,完全可以! 配置一下数据源,要用ip,就可以根据数据源来调用相应的Ejb 要数据源干嘛?直接用 在context 里lookup JNDI然后获得一个Home 的接口然后 用home.create()获得remote的ref然后就可以..... 楼主可以用jdbc或者DataSource都可以,只是看你实现的问题ClientContext clt=new ClientContext ();Context ctx=clt.getInitialContext();Object obj=ctx.lookup("JNDI NAME");....Home home=(...Home)PortableRemoteObject.narrow(obj,...Home.class);...........................public class ClientContext{public Context getInitalContext() throw...Exception{ String url="t3://......."; String user=null; Properties pro=null; try{ Properties pro=new Properties (); pro.put("Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi,WLINitialContextFactroy"); pro.put(Context.PROVIDER_URL,url); return new InitalContext(pro); } catch(Exception e){ .... }}} 因为EJB本身提供两个接口:home 和remoteRMI就可以远程调用接口,实际取得的是interface的reference。你不必考虑底层的动作,只要通过你的inerface reference将消息送出即可。当你想产生一个远程端口,必须依循以下原则:1.远端接口public2.远端接口必须继承java.rmi.remote3.必须将java.rmi.remote exception 声明到throw子句里4.作为引数的远端对象,必须声明为远端接口,而不是class 对于远程调用jboss的ejb,首先你要在客户端的机器上的classpath中引入几个类,在%jboss_home%\client下,具体是哪几个.jar文件我也不记得了。然后写一个config.properties(上下文的配置文件,当然你也可以在程序中指定,不过不推荐,原因很简单,为了以后的可移植性)文件,内容如下:java.naming.factory.initial=org.jnp.interfaces.NamingContextFactoryjava.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfacesjava.naming.provider.url=jnp://192.3.2.1:1099你所要引入的.jar文件应该包含org.jnp.interfaces.NamingContextFactory,org.jboss.naming:org.jnp.interfaces,这两个类,自己去%jboss_home%\client好好找找去。我第一回几乎是把client下的.jar文件都解压了找的。可能不止这两个类,你运行客户端的时候看看提示哪些class notfound,自己去把那些类放到classpath中去程序:Properties env=new Properties();env.load(new FileInputStream("config.properties"));InitialContext ctx=new javax.naming.InitialContext(env);Object obj=ctx.lookup("你的ejb服务器jboss.xml中的<jndi-name/>的值");你的home接口名 home=(你的home接口名)PortableRemoteObject.narrow(obj,你的home接口名完整类名包括.class);你的远程接口名 remote_interface=home.create();OK,Over!呵呵,够详细吧。 HTTP Status 500 怎么解决 初学者 求助!struts标签问题 急,WS-Security的问题,一定要帮忙。。。 Ant Build Failed错误,请赐教! 在网页下实现了一个数据库的统计功能,如果访问量大的时候,怕机器扛不起,现在要把他弄成静态的网页面。 怎么学习JMF 请问应该如何调用??? 有什么j2ee和ejb的好网站和论坛,谢谢 IE9下提交带有异步文件上传的表单,返回json浏览器提示下载.json文件 Spring IOC 和DI 的优势在哪? string转化成xml解析时乱码 请问大家都是怎样使用hibernate的?gui的生成工具都那么难用
用RMI太复杂,而且效率以及可维护性都是未知数。 你可以用GOOGLE搜一下,应该有这方面的文章。
直接用 在context 里lookup JNDI然后获得一个Home 的接口
然后 用home.create()
获得remote的ref
然后就可以.....
ClientContext clt=new ClientContext ();
Context ctx=clt.getInitialContext();
Object obj=ctx.lookup("JNDI NAME");
....Home home=(...Home)PortableRemoteObject.narrow(obj,...Home.class);
...........................
public class ClientContext{
public Context getInitalContext() throw...Exception{
String url="t3://.......";
String user=null;
Properties pro=null;
try{
Properties pro=new Properties ();
pro.put("Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi,WLINitialContextFactroy");
pro.put(Context.PROVIDER_URL,url);
return new InitalContext(pro);
}
catch(Exception e){
....
}
}}
RMI就可以远程调用接口,实际取得的是interface的reference。你不必考虑底层的动作,只要通过你的inerface reference将消息送出即可。
当你想产生一个远程端口,必须依循以下原则:
1.远端接口public
2.远端接口必须继承java.rmi.remote
3.必须将java.rmi.remote exception 声明到throw子句里
4.作为引数的远端对象,必须声明为远端接口,而不是class
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://192.3.2.1:1099
你所要引入的.jar文件应该包含org.jnp.interfaces.NamingContextFactory,org.jboss.naming:org.jnp.interfaces,这两个类,自己去%jboss_home%\client好好找找去。我第一回几乎是把client下的.jar文件都解压了找的。可能不止这两个类,你运行客户端的时候看看提示哪些class notfound,自己去把那些类放到classpath中去
程序:
Properties env=new Properties();
env.load(new FileInputStream("config.properties"));
InitialContext ctx=new javax.naming.InitialContext(env);
Object obj=ctx.lookup("你的ejb服务器jboss.xml中的<jndi-name/>的值");
你的home接口名 home=(你的home接口名)PortableRemoteObject.narrow(obj,你的home接口名完整类名包括.class);
你的远程接口名 remote_interface=home.create();OK,Over!呵呵,够详细吧。