EJB3入门(3)本地接口
by Elton on 六.16, 2009, under Java
之前用到的都是远程接口,顾名思义,远程接口就是提供不再同一个虚拟机中的两端程序来访问的。适合于分布式部署。但是有的时候客户端和服务端又在一个jvm中,比如在一个tomcat或者jboss的web容器中。这个时候就没有必要用远程接口了,毕竟浪费资源。可以改用local接口。
如果你尝试将上一节中的remote直接替换成local,再执行客户端,你会发现如下错误:
1 | Could not find InvokerLocator URL at JNDI address "ShoppingCartBean/local"; looking up local Proxy from Remote JVM? |
这说明你试图通过远程的jvm来调用本地的端口,因为客户端执行的这个jvm与ejb容器的jvm是两个不同的虚拟机。所以本地接口调用会失败。
在这里我们再建立一个web工程,创建web工程的时候,可以顺便创建一个EAR工程。
然后在这个web工程中加入对之前shoppingcart项目的引用。注意,这里已经将shoppingcart项目中的接口改为local方式。
在Java build path中,点击projects标签,点击add按钮,加入shoppingcart的项目
之后,在web项目中新建一个jsp页面,如index.jsp,代码如下:
1 |
之后就可以将EAR项目导出到jboss的部署目录中了。
部署好以后,jboss的输出会提示:
1 | 19:26:53,132 INFO [TomcatDeployment] deploy, ctxPath=/EJBWeb |
之后就可以在浏览器中输入localhost:8080/EJBWeb来测试本地接口了。






