Deployment Emply EJB和Servlet

Deployment Emply EJB和Servlet,deployment,servlets,ejb,Deployment,Servlets,Ejb,在阅读了这么长时间之后,我现在有机会用EJB弄脏了我的手。我在Ubuntu上使用Glassfish+Eclipse3.7 我首先创建了一个只返回问候消息的EJB。然后,我使用InitialContext创建应用程序客户端来访问这个EJB。这与预期完全一样 然后,我创建了一个servlet来访问该EJB。使用@EJB或InitialContext进行访问都不起作用 当我使用@EJB时,404页面显示如下描述:“请求的资源()不可用。” 使用InitialContent时,会引发ClassNotFo

在阅读了这么长时间之后,我现在有机会用EJB弄脏了我的手。我在Ubuntu上使用Glassfish+Eclipse3.7

我首先创建了一个只返回问候消息的EJB。然后,我使用InitialContext创建应用程序客户端来访问这个EJB。这与预期完全一样

然后,我创建了一个servlet来访问该EJB。使用@EJB或InitialContext进行访问都不起作用

当我使用@EJB时,404页面显示如下描述:“请求的资源()不可用。”

使用InitialContent时,会引发ClassNotFoundException。显然,servlet的类装入器无法访问EJB类。我试图将EJBJAR文件添加到servlet的lib文件夹中,但得到的错误消息是JNDI名称已经存在。显然,GlassFish也尝试在Servlet的lib文件夹中发布EJB

实现此功能的唯一方法是使用servlet发布EJB。这样,我就可以让servlet和独立应用程序访问EJB。问题是,我需要始终在EJB中使用servlet,这是不可取的,因为我的客户机可能不想使用web前端

无论如何,我的问题是,什么是让servlet访问类装入器之外使用的EJB的合适方式,而不必重复发布EJB

另外,问题也可能是Eclipse配置和使用这些组件的方式


非常感谢您的帮助。

也许您需要将EJB组件视为远程组件。也许真的是这样,因为你没有给出很多关于如何部署的细节。请尝试以下几点的说明:

  • 您可能需要将webapp和ejbjar放在
    .ear
    (企业应用程序)中,并将其部署到glassfish
  • 您可能需要webapp类路径上的远程接口(如果它们在运行时不可用,但在编译时可用,则不能期望它工作)
  • NetBeans通常更好地使用企业级工具和向导来创建和部署应用程序。试试看

经过一段时间的尝试,我发现我可以通过将其称为“/”来完成。这甚至适用于注入。

显示一些配置和代码。您的回答实际上并不能解决我的问题,但我从页面中学到了很多。非常感谢。干杯