只要war和ejb部署在同一服务器上,可以通过local interface访问ejb
解决方案 »
- 地址 省 市 镇 读取问题
- JBoss是servlet容器吗
- 调用web service调用出错...请各位看看....
- 如何在Java程序里判断服务器是否开启?
- jboss部署上传文件问题
- 在一个Struts-config的配置文件中写多个Action中出现的问题
- [续:第一个ejb,运行不成功,帮忙看看],请大家指点。
- 100 分求Together Edition for JBuilder的crack
- c语言的char * []用java怎么表达
- S2S4H4 刚开始做, Tomcat启动时出现下面的问题 纠结了好久了。麻烦大家给看看
- 问个IIS5和TOMCAT5整合后的问题?谢谢!
- 如何连接IIS和TOMCAT
但当EJB不是主要以组件形式提供给使用者,而是发布在同一机器上时,如果通过本地接口访问,实际上减少了网络通讯开销,所以说本地接口效率比远程接口高,也是这个原因,当然,这是以降低可移植性为代价的.
<ejb-local-ref>
<description>AuthenticateCenter</description>
<ejb-ref-name>local/AuthCenter</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local-home>com.norteksoft.erm.authenticate.AuthenticateCenterLocalHome</local-home>
<local>com.norteksoft.erm.authenticate.AuthenticateCenterLocal</local>
<ejb-link>EJBUser.jar#AuthenticateCenter</ejb-link>
</ejb-local-ref>
然后就可以在servlet、javabean、struts的plugin里面查找并缓存其接口或工厂:
public class EJBPlugIn
implements PlugIn {
private static ModuleConfig config = null;
private static AuthenticateCenterLocalHome authHome = null; public void init(ActionServlet servlet, ModuleConfig config) throws
ServletException {
this.config = config;
try {
InitialContext ctx = new InitialContext();
Object obj = ctx.lookup("java:comp/env/local/AuthCenter");
authHome = (AuthenticateCenterLocalHome) obj;
}
catch (Exception e) {
e.printStackTrace();
} public static AuthenticateCenterLocal getAuthCenter() throws CreateException {
return authHome.create();
}}
struts-config.xml配置该plugin:
<plug-in className="com.norteksoft.util.pool.EJBPoolPlugIn" />这样,你的web模块里随处都可以通过获得EJB的本地接口,调他的用方法了:
EJBPlugIn.getAuthCenter().callAFun;
-------------------------------------------应该是同一个JVM中,可以使用本地接口因为很多应用服务器可以在同一台中启动多个应用实例来共同向外提供服务(比如WEBSPHERE),他们是不同的JVM,如果要在这些JVM间,就必须使用远程接口
<ejb-link>EJBUser.jar#AuthenticateCenter</ejb-link>
web.xml中的ejb-link是什么意思呢?是不是可以不配置啊?
谢谢!
应该是同一个JVM中,可以使用本地接口因为很多应用服务器可以在同一台中启动多个应用实例来共同向外提供服务(比如WEBSPHERE),他们是不同的JVM,如果要在这些JVM间,就必须使用远程接口——————————————————————————————
同意你的说法,但是你没有理解我的服务器的含义。在WAS主可控台应用程序发布过程中,有一个步骤是“映射模块到应用程序服务器”,在其中就非常明确的提到:一个实例,对于WAS而言,就是一个服务器,所以有
WebSphere:cell
WebSphere:cell=appserver1,node=appserver1,server=server1
WebSphere:cell=appserver1,node=appserver1,server=server2这个server1和server2的区别,就是一台机器上的两个实例(服务器)
既然实例被当作服务器,自然没有了JVM的辨别,不过对于"很多应用服务器可以在同一台中启动多个应用实例来共同向外提供服务(比如WEBSPHERE)",咱是没经历过,因为咱针对的客户太专业性,特定的客户群~~呵呵
要是有那种一台机器开多个实例的人确实要注意了,毕竟Remote接口是为了方便部署和访问的,选用local要注意发布的实例位置。