camel-restlet和org.restlet.jee.ext.spring版本冲突?

时间:2014-08-14 14:43:26

标签: apache-camel restlet

我正在尝试创建一个在Glassfish 4上部署的webapp。 以下是例子 Using the Restlet servlet within a webapp

  • 创建了maven项目
  • 将依赖项添加到pom.xml
  • 将servlet配置放入web.xml
  • 将bean定义放入context.xml

我的问题是它在glassfish下不能作为webapp运行。使用mvn jetty:run它运行正常,但不是玻璃鱼。

我怀疑camel-restlet和org.restlet.jee.ext.sprint之间存在Spring版本冲突。

  • camel-restlet v1.13.0+取决于spring v3.2.8.RELEASE
  • org.restlet.jee.ext.sprint v2.2.2取决于spring v3.2.6.RELEASE

早期版本有类似的差异,如

  • camel-restlet v1.12.3+取决于spring v3.2.5.RELEASE

所以我找不到彼此匹配的camel-restletext.spring版本。

如何让camel.apache.org的示例在glassfish下工作。

P.S。谷歌和合作。那已经做到了。来自github和其他资源的例子已经尝试过。

因此。这是来自glassfish中运行的webapp的server.log的输出。正如我所说,相同的代码在码头运行良好。

SpringCamelContext     DEBUG Route: RS_RestletDemo >>> EventDrivenConsumerRoute[Endpoint[/demo/(id)?restletMethods=GET] -> Channel[Transform(Simple: Request type : ${header.CamelHttpMethod} and ID : ${header.id})]]
SpringCamelContext     DEBUG Starting consumer (order: 1001) on route: RS_RestletDemo
DefaultManagementAgent DEBUG Registered MBean with ObjectName: org.apache.camel:context=camel-1-1,type=consumers,name=RestletConsumer(0x40cb4833)
RestletConsumer        DEBUG Starting consumer: Consumer[/demo/(id)?restletMethods=GET]
RestletComponent       DEBUG Setting parameters: [] to server: org.restlet.Server@8528a1b
RestletComponent       DEBUG Added server: null:80
RestletComponent       DEBUG Added method based router: org.apache.camel.component.restlet.MethodBasedRouter@62e8f6e1
RestletComponent       DEBUG Attached restlet uriPattern: /demo/{id} method: GET
RestletComponent       DEBUG Attached methodRouter uriPattern: /demo/{id}
RestletComponent       DEBUG Started methodRouter uriPattern: /demo/{id}
SpringCamelContext     INFO  Route: RS_RestletDemo started and consuming from: Endpoint[/demo/(id)?restletMethods=GET]

GET http://localhost:8080/camel-restlet/rs/demo/123

HTTP状态500 - 内部服务器错误

javax.servlet.ServletException: Servlet.init() for servlet RestletServlet threw exception
root cause

java.lang.VerifyError: Bad type on operand stack
Exception Details:
  Location:
    org/restlet/ext/servlet/internal/ServletWarClient.<init>(Lorg/restlet/Context;Ljavax/servlet/ServletContext;)V @35: putfield
  Reason:
    Type 'org/restlet/ext/servlet/internal/ServletWarClientHelper' (current frame, stack[1]) is not assignable to 'org/restlet/engine/connector/ClientHelper'
  Current Frame:
    bci: @35
    flags: { }
    locals: { 'org/restlet/ext/servlet/internal/ServletWarClient', 'org/restlet/Context', 'javax/servlet/ServletContext' }
    stack: { 'org/restlet/ext/servlet/internal/ServletWarClient', 'org/restlet/ext/servlet/internal/ServletWarClientHelper' }
  Bytecode:
    0000000: 2a2b b600 0101 c000 02b7 0003 2ab6 0004
    0000010: b200 05b9 0006 0200 572a bb00 0759 2a2c
    0000020: b700 08b5 0009 b1       

你能告诉我我做错了什么吗?

我尝试覆盖spring版本,不包括pom.xml等中的expring依赖项。没有运气。

更新即可。 固定

针对遇到类似问题的人的说明 我修好了 - 使用org.restlet.ext.spring v2.1.7camel-restlet v2.13.2 - 将org.restlet.ext.spring移至顶部 - 从pom.xml删除所有Spring依赖项 移动

现在它在war中的glassfish 3,4和独立的jetty工作 可以在github

找到工作版本的示例

0 个答案:

没有答案