@Inject into Jax-rs resource:CWWAM0002E:将注释合并到部署描述符时发生异常:

时间:2017-12-31 21:31:39

标签: path jax-rs cdi websphere-8 inject

当我在Eclipse中将Rest服务本地部署到我的WAS 85环境时,我得到了一个奇怪的例外:

CWWAM0002E: An exception occurred while merging an annotation into deployment descriptor: com.ibm.wsspi.amm.merge.MergeException: Unable to find EnterpriseBean for class WackyDoodleResource
                             com.ibm.wsspi.amm.merge.MergeException: Unable to find EnterpriseBean for class WackyDoodleResource

这不是我真正的代码,但这里是我如何设置它更改名称以保护无辜:

@Path("/wacky-doodle-resource")
public class WackyDoodleResource{
       @Context UriInfo uriInfo
       @Context SecurityContext securityContext;
       @Inject WackyDoodleEJB wackyDoodleEJB;

       @POST
       @Consumes(MediaType.APPLICATIONI_JSON)
       @RolesAllowed("WACKYDOODLES")
       @Produces(MediaType.APPLICATIONI_JSON)
       public Response createWackyDoodle(WackyDoodleRequestRO requestRO{
              String response = null;
              response = wackyDoodleEJB.createWackyDoodle(requestRO)
       }
       return Response.ok(response)).build();

}



@Default
@Singleton
public class WackyDoodleEJB implements IWackyDoodleEJB{

public String createWackyDoodle(WackyDoodleRequestRO req){
       System.out.println("Do Something Wacky!");
       }
}

public interface IWackyDoodleEJB{
       public String createWackyDoodle(WackyDoodleRequestRO request);
}

(为了说明目的,简单地重新编写我更复杂的代码)

当我将我的耳朵部署到本地Websphere服务器时,我看到了异常。该应用程序似乎启动并部署正常(如果您不注意在日志中找到的内容)。但是,当我试图点击我的任何http请求@myResources时,我得到了这个奇怪的不起眼的消息

E com.ibm.ws.webcontainer.internal.WebContainer handleRequest SRVE0255E: A WebGroup/Virtual Host to handle / has not been defined.

我怀疑这与我的耳朵没有正确发布有关(我的问题中的例外)。老实说,我不知道。那么,这里可能发生什么?这看起来应该是漂亮的boilertplate东西? 该错误表明我应该将常规资源pojo转换为EJB?例如,如果我将无状态@nnotation添加到我的类中,则日志中的上述异常消失,但我仍然无法访问我的服务资源。我得到了同样的非描述性异常。我很茫然,我一直在看这个一个小时。如果你能指出我的任何方向,我会很感激。

0 个答案:

没有答案