使用ear / ejb / web模块时,Glassfish 4.1无法运行RestFul服务 [英] Glassfish 4.1 can't run RestFul service when using ear/ejb/web module

查看:112
本文介绍了使用ear / ejb / web模块时,Glassfish 4.1无法运行RestFul服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有很多jee7 maven项目(带有web和ejb模块的耳朵),RestFul服务在Glassfish v 4.0上运行良好,但只要我尝试在Glassfish v 4.1上运行这些项目,RestFul服务就不会运行,并且他们抛出这个异常:

  javax.servlet.ServletException:一个MultiException有1个例外。它们是:
1. org.glassfish.hk2.api.UnsatisfiedDependencyException:在SystemInjecteeImpl没有可用于注入的对象(r​​equiredType = TestBean,parent = GenericResource,qualifiers = {},position = -1,optional = false ,self = false,unqualified = null,82785107)

我已经仔细检查了这个问题并确定了Glassfish 4.1可能有一个破碎的库(可能是cdi实现?),Glassfish v。4.0和Wildfly 8.1.0.Final正在运行良好...



我无法理解如何在GlassFish v 4.1上运行我的RestFul Web服务......



有人可以帮我吗?

非常感谢您提前...

这里堆栈跟踪:

  Avvertenza:无法使用简单的表单名称查找EJB类的一个实例test.rest.GenericResource。尝试使用完全限定的表单名称进行查找。 
javax.naming.NamingException:SerialContext中'java:app / TestEjb / GenericResource'的查找失败[myEnv = {java.naming.factory.initial = com.sun.enterprise.naming.impl.SerialInitContextFactory,java。 naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,java.naming.factory.url.pkgs = com.sun.enterprise.naming} [根异常是javax.naming.NameNotFoundException:没有绑定名称为java:app / TestEjb / GenericResource的对象
在com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
at com.sun.enterprise.naming .impl.SerialContext.lookup(SerialContext.java:438)$ javax.naming.InitialContext.lookup中的
(InitialContext.java:417)$ javax.naming.InitialContext.lookup中的b $ b(InitialContext.java:417 )
at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.lookupSimpleForm(EjbComponentProvider.java:378)
at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.lookup(EjbComponentProvider的.java:36 0)
。在org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.access $ 000(EjbComponentProvider.java:100)
。在org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider $ EjbFactory 。提供(EjbComponentProvider.java:123)
at org.jvnet.hk2.internal.FactoryCreator.create(FactoryCreator.java:124)
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor的.java:461)
处org.jvnet.hk2.internal.Utilities.createService org.jvnet.hk2.internal.PerLookupContext.findOrCreate(PerLookupContext.java:69)
(Utilities.java:2258 )
at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:690)
at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:655)
。在org.glassfish.jersey.internal.inject.Injections.getOrCreate(Injections.java:172)
在org.glassfish.jersey.server.model.MethodHandler $ ClassBasedMethodHandler.getInstance(MethodHandler.java:185)
在org.g lassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply(PushMethodHandlerRouter.java:74)
在org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112)
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115 )
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage .java:94)
在org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:63)
在org.glassfish.jersey.process.internal.Stages.process (Stages.java:197)
在org.glassfish.jersey.server.ServerRuntime $ 1.run(ServerRuntime.java:263)
在org.glassfish.jersey.internal.Errors $ 1.call(Errors .java:271)
在org.glassfish.jersey.internal.Errors $ 1.call(Errors .java:267)
在org.glassfish.jersey.internal.Errors.process(Errors.java:315)
在org.glassfish.jersey.internal.Errors.process(Errors.java:297 )
在org.glassfish.jersey.internal.Errors.process(Errors.java:267)
在org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)在org.glassfish.jersey.servlet.ServletContainer.service上的
(ServletContainer.java:381)在org.glassfish上
。 jersey.servlet.ServletContainer.service(ServletContainer.java:344)
处org.apache.catalina.core org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
。 StandardWrapper.service(StandardWrapper.java:1682)
在org.apache.catalina.core .StandardWrapperValve.invoke(StandardWrapperValve.java:318)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke (StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java :在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174 99)

在org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
。在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
在com.sun.enterprise.v3.services.impl.ContainerMapper $ HttpHandlerCallable.call(ContainerMapper.java:459 )
在com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
在org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java :201)
在org.gla在org.glassfish.grizzly.http.server.HttpServerFilter.handleRead ssfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
(HttpServerFilter.java:235)
。在组织。 glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly .filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish.grizzly.filterchain.DefaultFilterChain .process(DefaultFilterChain.java:112)
在org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
在org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport .java:561)
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100(WorkerThreadIOStrategy.java:56)
org.glassfish .grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish .grizzly.threadpool.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:545)
在java.lang.Thread.run(Thread.java:745)
产生的原因:javax.naming.NameNotFoundException:无对象绑定到名称java:app / TestEjb / GenericResource
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:741)
at com.sun.enterprise.naming.impl .GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:715)
at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaUR LContext.java:167)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471)
... 64 more

Grave: javax.naming.NamingException中:查找失败:在SerialContext的Java!应用程序/ TestEjb / GenericResource test.rest.GenericResource'[myEnv = {java.naming.factory.initial的= com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,java.naming.factory.url.pkgs = com.sun.enterprise.naming} [根异常是javax.naming。 NameNotFoundException:没有对象绑定到名称java:app / TestEjb / GenericResource!test.rest.GenericResource]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)$ javax.naming.InitialContext.lookup中的b $ b(InitialContext.java:417)$ javax.naming.InitialContext中的b $ b .lookup(InitialContext.java:417)
在org.glassfish.je rsey.gf.ejb.internal.EjbComponentProvider.lookupFullyQualifiedForm(EjbComponentProvider.java:400)
at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.lookup(EjbComponentProvider.java:364)
at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.access $ 000(EjbComponentProvider.java:100)
at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider $ EjbFactory.provide(EjbComponentProvider.java: 123)
at org.jvnet.hk2.internal.FactoryCreator.create(FactoryCreator.java:124)
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:461)$ b在org.jvnet.hk2.internal.PerLookupContext.findOrCreate(PerLookupContext.java:69)
$ b在org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2258)
。在组织.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:690)
org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:655)
at org.glassfish.j ersey.internal.inject.Injections.getOrCreate(Injections.java:172)
at org.glassfish.jersey.server.model.MethodHandler $ ClassBasedMethodHandler.getInstance(MethodHandler.java:185)
at org。 glassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply(PushMethodHandlerRouter.java:74)
在org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112)
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115 )
at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage .java:94)
在org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:63)
在org.glassfish.jersey.process.internal.Stages.process (Stages.java:197)
org。 glassfish.jersey.server.ServerRuntime $ 1.run(ServerRuntime.java:263)
在org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:271)
在org.glassfish。 jersey.internal.Errors $ 1.call(Errors.java:267)
在org.glassfish.jersey.internal.Errors.process(Errors.java:315)
在org.glassfish.jersey.internal .Errors.process(Errors.java:297)
在org.glassfish.jersey.internal.Errors.process(Errors.java:267)
在org.glassfish.jersey.process.internal.RequestScope .runInScope(RequestScope.java:297)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler .java:1028)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381 )
在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
at或g.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
处org.apache org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
。 catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
处org.apache.catalina.core org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
。 StandardPipeline.doInvoke(StandardPipeline.java:734)
在org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
在com.sun.enterprise.web.WebPipeline.invoke( WebPipeline.java:99)
在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
在org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java: 415)
在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
在com.sun.enterprise.v3.services.impl.ContainerMapper $ HttpHandlerCallable.call(ContainerMapper。 java:459)
在com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
在org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)$ b在org.glassfish.grizzly.http.server.HttpServerFilter.handleRead在org.glassfish.grizzly.http.server.HttpHandler.doHandle $ b(HttpHandler.java:175)
(HttpServerFilter.java:235)
at org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at org.glassfish。 grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at org。 glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
处org.glassfish org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
。 grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies .WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool .AbstractThreadPool $ Worker.run(AbstractThreadPool.java:545)$ b $在java.lang.Thread.run(Thread.java:745)
引起:javax.naming.NameNotFoundException:没有绑定到名称的对象java:app / TestEjb / GenericResource!test.rest.GenericResource
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl。查找(GlassfishNamingManagerImpl.java:741)
处com.sun.enterprise.naming.impl.JavaURLContext com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:715)
。查找(JavaURLContext.java:167)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471)
... 64 more

Avvertenza:StandardWrapperValve [test.rest.ApplicationConfig]:servlet的Servlet.service()test.rest.ApplicationConfig抛出异常
org.glassfish.hk2.api.UnsatisfiedDependencyException:在SystemInjecteeImpl没有可用于注入的对象(r​​equiredType = TestBean,parent = GenericResource,qualifiers = {},position = -1,optional = false,self = false,unqualified = null,734647163)
at org.jvnet.hk2.internal.ThreeThirtyThirtyResolver.resolve(ThreeThirtyResolver。 java:74)
at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:947)
at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocator Impl.java:902)
at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:977)
at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java: 968)
在org.glassfish.jersey.internal.inject.Injections.getOrCreate(Injections.java:173)
at org.glassfish.jersey.server.model.MethodHandler $ ClassBasedMethodHandler.getInstance(MethodHandler。 Java的:在org.glassfish.jersey.server.internal.routing.RoutingStage在org.glassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply 185)
(PushMethodHandlerRouter.java:74)
。 _apply(RoutingStage.java:112)
位于org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
位于org.glassfish.jersey.server.internal。 routing.RoutingStage._apply(RoutingStage.java:115)
位于org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
位于org.glassfish.jersey处。 server.intern在org.glassfish上使用org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:63)
获得的路由应用(RoutingStage.java:94)
。 jersey.process.internal.Stages.process(Stages.java:197)
在org.glassfish.jersey.server.ServerRuntime $ 1.run(ServerRuntime.java:263)
在org.glassfish.jersey .internal.Errors $ 1.call(Errors.java:271)在org.glassfish.jersey.internal.Errors处
$ orc.glassfish.jersey.internal处的$ 1.call(Errors.java:267)
.Errors.process(Errors.java:315)
在org.glassfish.jersey.internal.Errors.process(Errors.java:297)
在org.glassfish.jersey.internal.Errors.process (Errors.java:267)
在org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
在org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime .java:254)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
at org.glassfish.jersey.serv let.WebComponent.service(WebComponent.java:372)
处org.glassfish.jersey.servlet.ServletContainer org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
。服务(ServletContainer.java:344)
在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
在org.apache.catalina.core.StandardWrapper.service(StandardWrapper。 Java的:1682)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318

在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)在org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)

在org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
在com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
在org.apache .catalina.connector.CoyoteAd apter.doService(CoyoteAdapter.java:415)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
at com.sun.enterprise.v3.services.impl。 ContainerMapper $ HttpHandlerCallable.call(ContainerMapper.java:459)
在com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
在org.glassfish.grizzly。 http.server.HttpHandler.runService(HttpHandler.java:201)
位于org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
位于org.glassfish.grizzly。 http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
在org.glassfish.grizzly.filterchain.ExecutorResolver $ 9.execute(ExecutorResolver.java:119)
在org.glassfish.grizzly.filterchain .DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at org.glassfish.grizzly.filterchain.DefaultFilter Chain.execute(DefaultFilterChain.java:133)
在org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
在org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor。的java:在org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561 77)

。在org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java: 112)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access $ 100(WorkerThreadIOStrategy.java:56)
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy $ WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.doWork(AbstractThreadPool.java:565)
at org.glassfish.grizzly.threadpool.AbstractThreadPool $ Worker.run(AbstractThreadPool.java:545)
在java.lang.Thread.run(Thread.java:745)

我喜欢一个ejb模块和一个web模块(web模块将ejb模块添加为库)。

ejb模块包含以下类:

  package test.session; 
import javax.ejb.Stateless;
import javax.inject.Named;
@Stateless
@Named
public class TestBean {
public String getValue(){
returnvalue;


Web模块具有以下类:

  package test.rest; 
import java.util.Set;
import javax.ws.rs.core.Application;
@ javax.ws.rs.ApplicationPath(webresources)
public class ApplicationConfig extends Application {
@Override
public Set< Class<>> getClasses(){
Set< Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(资源);
返回资源;
}
private void addRestResourceClasses(Set< Class<>> resources){
resources.add(test.rest.GenericResource.class);


$ / code $ / pre
$ b $ p


  package test.rest; 
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PUT;
import test.session.TestBean;
@Path(generic)
@Stateless
public class GenericResource {
@Context
private UriInfo context;
@Inject
TestBean testBean;
public GenericResource(){
}
@GET
@Produces(application / json)
public String getXml(){
// TODO返回适当的表示对象
return testBean.getValue();


如果我尝试浏览:

  http:// localhost:8080 / TestRest / webresources / generic 

Glassfish 4.1引发异常,Glassfish 4.0运行良好...

解决方案

类似的问题。它是@ user993553提到的一个错误,它试图从EJB模块中实例化WAR模块的EJB(GenericResource)。



解决方法是将EJB从WAR模块到CDI。只需将 @ javax.ejb.Stateless 更改为 @ javax.enterprise.context.RequestScoped 或任何其他范围。 p>

  @Path(generic)
@ javax.enterprise.context.RequestScoped
公共类GenericResource
{
@Context
私有UriInfo上下文;

@Inject
TestBean testBean;
$ b $ public GenericResource(){}

@GET
@Produces(application / json)
public String getXml(){
// TODO返回适当的表示对象
return testBean.getValue();
}
}


I've a lot of jee7 maven projects (ears with web and ejb modules) with RestFul services that run well on Glassfish v 4.0 but as soon as I try to run these projects on Glassfish v. 4.1 the RestFul services don't work anymore and they throw this exception:

javax.servlet.ServletException: A MultiException has 1 exceptions.  They are:
1. org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=TestBean,parent=GenericResource,qualifiers={},position=-1,optional=false,self=false,unqualified=null,82785107)

I've double checked the problem and definitively Glassfish 4.1 probably has a broken library (maybe cdi implementation ?), Glassfish v. 4.0 and Wildfly 8.1.0.Final are working well...

I can't understand how can I run my RestFul web services on Glassfish v. 4.1...

Does anyone can help me ?

Many thanks in advance...

Here the stack trace:

Avvertenza:   An instance of EJB class, test.rest.GenericResource, could not be looked up using simple form name. Attempting to look up using the fully-qualified form name.
javax.naming.NamingException: Lookup failed for 'java:app/TestEjb/GenericResource' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: No object bound to name java:app/TestEjb/GenericResource]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.lookupSimpleForm(EjbComponentProvider.java:378)
    at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.lookup(EjbComponentProvider.java:360)
    at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.access$000(EjbComponentProvider.java:100)
    at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider$EjbFactory.provide(EjbComponentProvider.java:123)
    at org.jvnet.hk2.internal.FactoryCreator.create(FactoryCreator.java:124)
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:461)
    at org.jvnet.hk2.internal.PerLookupContext.findOrCreate(PerLookupContext.java:69)
    at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2258)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:690)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:655)
    at org.glassfish.jersey.internal.inject.Injections.getOrCreate(Injections.java:172)
    at org.glassfish.jersey.server.model.MethodHandler$ClassBasedMethodHandler.getInstance(MethodHandler.java:185)
    at org.glassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply(PushMethodHandlerRouter.java:74)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:94)
    at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:63)
    at org.glassfish.jersey.process.internal.Stages.process(Stages.java:197)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:263)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)
Caused by: javax.naming.NameNotFoundException: No object bound to name java:app/TestEjb/GenericResource
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:741)
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:715)
    at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:167)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471)
    ... 64 more

Grave:   javax.naming.NamingException: Lookup failed for 'java:app/TestEjb/GenericResource!test.rest.GenericResource' in SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming.NameNotFoundException: No object bound to name java:app/TestEjb/GenericResource!test.rest.GenericResource]
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.lookupFullyQualifiedForm(EjbComponentProvider.java:400)
    at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.lookup(EjbComponentProvider.java:364)
    at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider.access$000(EjbComponentProvider.java:100)
    at org.glassfish.jersey.gf.ejb.internal.EjbComponentProvider$EjbFactory.provide(EjbComponentProvider.java:123)
    at org.jvnet.hk2.internal.FactoryCreator.create(FactoryCreator.java:124)
    at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:461)
    at org.jvnet.hk2.internal.PerLookupContext.findOrCreate(PerLookupContext.java:69)
    at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2258)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.internalGetService(ServiceLocatorImpl.java:690)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:655)
    at org.glassfish.jersey.internal.inject.Injections.getOrCreate(Injections.java:172)
    at org.glassfish.jersey.server.model.MethodHandler$ClassBasedMethodHandler.getInstance(MethodHandler.java:185)
    at org.glassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply(PushMethodHandlerRouter.java:74)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:94)
    at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:63)
    at org.glassfish.jersey.process.internal.Stages.process(Stages.java:197)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:263)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)
Caused by: javax.naming.NameNotFoundException: No object bound to name java:app/TestEjb/GenericResource!test.rest.GenericResource
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:741)
    at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:715)
    at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:167)
    at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:471)
    ... 64 more

Avvertenza:   StandardWrapperValve[test.rest.ApplicationConfig]: Servlet.service() for servlet test.rest.ApplicationConfig threw exception
org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at SystemInjecteeImpl(requiredType=TestBean,parent=GenericResource,qualifiers={},position=-1,optional=false,self=false,unqualified=null,734647163)
    at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:74)
    at org.jvnet.hk2.internal.Utilities.justInject(Utilities.java:947)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.inject(ServiceLocatorImpl.java:902)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:977)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.createAndInitialize(ServiceLocatorImpl.java:968)
    at org.glassfish.jersey.internal.inject.Injections.getOrCreate(Injections.java:173)
    at org.glassfish.jersey.server.model.MethodHandler$ClassBasedMethodHandler.getInstance(MethodHandler.java:185)
    at org.glassfish.jersey.server.internal.routing.PushMethodHandlerRouter.apply(PushMethodHandlerRouter.java:74)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:112)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage._apply(RoutingStage.java:115)
    at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:94)
    at org.glassfish.jersey.server.internal.routing.RoutingStage.apply(RoutingStage.java:63)
    at org.glassfish.jersey.process.internal.Stages.process(Stages.java:197)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:263)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

I've an ear with one ejb module and one web module (the web module add ejb module as library).

The ejb module has this class:

package test.session;
import javax.ejb.Stateless;
import javax.inject.Named;
@Stateless
@Named
public class TestBean {
  public String getValue() {
    return "value";
  }
}

The web module has this classes:

package test.rest;
import java.util.Set;
import javax.ws.rs.core.Application;
@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {
  @Override
  public Set<Class<?>> getClasses() {
    Set<Class<?>> resources = new java.util.HashSet<>();
    addRestResourceClasses(resources);
    return resources;
  }
  private void addRestResourceClasses(Set<Class<?>> resources) {
    resources.add(test.rest.GenericResource.class);
  }
}

and:

package test.rest;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PUT;
import test.session.TestBean;
@Path("generic")
@Stateless
public class GenericResource {
  @Context
  private UriInfo context;
  @Inject
  TestBean testBean;
  public GenericResource() {
  }
  @GET
  @Produces("application/json")
  public String getXml() {
    //TODO return proper representation object
    return testBean.getValue();
 }
}

If I try to navigate:

http://localhost:8080/TestRest/webresources/generic

Glassfish 4.1 raise exception and Glassfish 4.0 works well...

解决方案

I had a similar problem. It's a bug as mentioned by @user993553, it tries to instantiate the EJB (GenericResource) of WAR Module from within the EJB Module.

A workaround is to convert your EJB from WAR Module to CDI. Just change @javax.ejb.Stateless to @javax.enterprise.context.RequestScoped or any other scope.

@Path("generic")
@javax.enterprise.context.RequestScoped
public class GenericResource 
{
    @Context
    private UriInfo context;

    @Inject
    TestBean testBean;

    public GenericResource() {}

    @GET
    @Produces("application/json")
    public String getXml() {
        // TODO return proper representation object
        return testBean.getValue();
    }
}

这篇关于使用ear / ejb / web模块时,Glassfish 4.1无法运行RestFul服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆