3

我正在使用 Wink 1.2 在 jBoss EAP 6.1 (7.2.1Final) 上部署我的 RESTful Web 应用程序,并在所有请求中出现以下异常;

     <b>JBWEB000070: exception</b>
            <pre>java.lang.NullPointerException
org.apache.wink.common.internal.http.Accept.valueOf(Accept.java:139)
org.apache.wink.server.internal.contexts.HttpHeadersImpl.getAcceptHeader(HttpHeadersImpl.java:152)
org.apache.wink.server.internal.contexts.HttpHeadersImpl.getAcceptableMediaTypes(HttpHeadersImpl.java:106)
org.apache.wink.server.internal.registry.ResourceRegistry.filterByProduces(ResourceRegistry.java:558)
org.apache.wink.server.internal.registry.ResourceRegistry.filterDispatchMethods(ResourceRegistry.java:482)
org.apache.wink.server.internal.registry.ResourceRegistry.findMethod(ResourceRegistry.java:359)
org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleResourceMethod(FindResourceMethodHandler.java:138)
org.apache.wink.server.internal.handlers.FindResourceMethodHandler.handleRequest(FindResourceMethodHandler.java:65)
org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)
org.apache.wink.server.internal.handlers.FindRootResourceHandler.handleRequest(FindRootResourceHandler.java:95)
org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:26)
org.apache.wink.server.handlers.RequestHandlersChain.handle(RequestHandlersChain.java:22)
org.apache.wink.server.handlers.AbstractHandlersChain.doChain(AbstractHandlersChain.java:63)

相同的应用程序在以前的 jBoss 版本(如 EAP 5.1 和旧版本)上运行良好。

我还使用 tcpmon 捕获了发布的请求并在标头中获取以下信息;

    GET /hothouse-iris/Hothouse.svc/ HTTP/1.1
    Host: 127.0.0.1:9090
    Connection: keep-alive
    Authorization: Basic U1NPVVNFUjE6MTIzNDU2
    Cache-Control: no-cache
    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
    Content-Type: application/atom+xml
    Accept: */*
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
    Cookie: JSESSIONID=8D9FE5379FE7576610BB4B78A431AD10; __utma=96992031.2145502422.1381922298.1382004674.1382006170.4; __utmc=96992031; __utmz=96992031.1381922298.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

我正在使用 Chrome 扩展程序 POSTMan 来请求我的服务并且它可以工作。

4

4 回答 4

4

问题是 jboss 7 提供的 JAX-RS 实现与 Apache Wink 冲突,我们必须通过在 JBOSS_HOME\modules\system\layers\base\javax\ws\rs\ 下注释 module.xml 的内容来完全禁用 jboss impl api\main 停止加载 Jboss JAX-RS API,它工作正常

于 2013-12-05T14:32:26.330 回答
4

问题是 Accept 类的初始化实际上并没有发生,并且委托字段为空。

RuntimeDelegate 是一个接口,其实现应在 META-INF/service/javax.ws.rs.ext.RuntimeDelegate 文件中指定,该文件在类路径中搜索。

wink-common.jar 包含这样一个具有正确实现类名称的服务文件,但是如果在正确的类路径(在 jar 上)上找到其他具有相同名称的服务文件,我们会有这样一个奇怪的行为。

于 2014-06-25T11:37:40.290 回答
2

这个错误是由jar文件冲突引起的。我删除了jetty.jar,jetty-util.jar并删除了jsr305.jar,REST API工作正常。

于 2013-10-22T10:30:19.463 回答
1

在 WAS8.5 自由配置文件上,即使我删除了导致错误的 wink 依赖项,错误也不会消失。最终结果证明我需要停止并启动我的服务器。该解决方案发布在此链接的最底部https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000-0000-0000-000014940544

于 2014-06-01T00:34:23.863 回答