这是我的问题:我正在学习Java EE开发,我想使用Ejb构建WebApplication.首先,我尝试在同一台机器上进行开发,在glassfish域上创建EJB模块,并通过在同一台机器上但在不同域上运行的Web应用程序访问它:一切正常.由于我的WEB-ING文件夹中的glassfish-web.xml的定义,我能够使用glassfish 3.1从webapp访问EJBmodule:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<ejb-ref>
<ejb-ref-name>ejb/FirstBeanRemote</ejb-ref-name>
<jndi-name>corbaname:iiop:127.0.0.1:3700#java:global/EJBModule/FirstBean!ejb.FirstBeanRemote</jndi-name>
</ejb-ref>
</glassfish-web-app>
Run Code Online (Sandbox Code Playgroud)
在此之后,我想改变实验,使用不同的机器为ejb模块和webapp.首先,我在debian机器上安装了glassfish 3.1并部署了我的模块,包括所需的接口.在部署中没有返回任何错误,所以我继续启动域,并且所有似乎都正常工作.在server.log中,我复制了EJB FirstBean的可移植jndi名称:
Portable JNDI names for EJB FirstBean: [java:global/EJBModule/FirstBean, java:global/EJBModule/FirstBean!ejb.FirstBeanRemote]
Run Code Online (Sandbox Code Playgroud)
所以现在在使用Netbeans的另一台机器上(在Windows 7下),我创建了与前一个相同的webapp,只需用这种方式更改glassfish-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app>
<ejb-ref>
<ejb-ref-name>ejb/FirstBeanRemote</ejb-ref-name>
<jndi-name>corbaname:iiop:192.168.1.110:3700#java:global/EJBModule/FirstBean!ejb.FirstBeanRemote</jndi-name>
</ejb-ref>
</glassfish-web-app>
Run Code Online (Sandbox Code Playgroud)
我确定Ip(我的局域网中的静态)和端口(我在glassfish上创建一个默认域).问题来了.当我启动webapplication时,我收到错误:
com.sun.faces.mgbean.ManagedBeanCreationException: An error occurred performing resource injection on managed bean prova
at com.sun.faces.mgbean.BeanBuilder.injectResources(BeanBuilder.java:211)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:103)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) …Run Code Online (Sandbox Code Playgroud)