Apache camel camel restlet和org.restlet.jee.ext.spring版本冲突?
我正在尝试创建一个要部署在Glassfish 4上的webapp。 以Apache camel camel restlet和org.restlet.jee.ext.spring版本冲突?,apache-camel,restlet,Apache Camel,Restlet,我正在尝试创建一个要部署在Glassfish 4上的webapp。 以 创建maven项目 将依赖项添加到pom.xml 将servlet配置放入web.xml 将bean定义放入context.xml中 我的问题是它不能在glassfish下作为webapp运行。使用mvn jetty:run它运行正常,但在glassfish中运行不正常 我怀疑camel restlet和org.restlet.jee.ext.sprint之间存在Spring版本冲突 camel restlet v1
- 创建maven项目
- 将依赖项添加到
pom.xml
- 将servlet配置放入
web.xml
- 将bean定义放入context.xml中
取决于camel restlet v1.13.0+
spring v3.2.8。发行版
取决于org.restlet.jee.ext.sprint v2.2.2
spring v3.2.6.版本
取决于camel restlet v1.12.3+
spring v3.2.5。发行版
camel-restlet
和ext.spring
版本
如何使camel.apache.org中的示例在glassfish下工作
p、 美国谷歌公司已经这样做了。github和其他资源中的示例已经尝试过
所以。下面是在glassfish中运行的webapp的server.log输出。正如我所说,同样的代码在jetty中运行良好
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]
GEThttp://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
javax.servlet.ServletException:servlet的servlet.init()引发异常
根本原因
java.lang.VerifyError:操作数堆栈上的类型错误
例外情况详情:
地点:
org/restlet/ext/servlet/internal/ServletWarClient.(Lorg/restlet/Context;Ljavax/servlet/ServletContext;)V@35:putfield
原因:
类型“org/restlet/ext/servlet/internal/ServletWarClientHelper”(当前帧,堆栈[1])不可分配给“org/restlet/engine/connector/ClientHelper”
当前帧:
密件抄送:@35
标志:{}
局部变量:{'org/restlet/ext/servlet/internal/ServletWarClient','org/restlet/Context','javax/servlet/ServletContext'}
堆栈:{'org/restlet/ext/servlet/internal/ServletWarClient','org/restlet/ext/servlet/internal/ServletWarClientHelper'}
字节码:
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等中导出依赖项。。不走运
更新。固定的
给面临类似问题的人的提示
我用一根绳子把它修好了
-使用org.restlet.ext.spring v2.1.7
和camel restlet v2.13.2
-将org.restlet.ext.spring移动到顶部
-从pom.xml
移动
现在它在glassfish 3,4
中充当war
和独立jetty
有关工作版本的示例,请访问