的NoSuchMethodError在Tomcat中嵌入MULE执行时,HTTP:设置Cookie(

2019-10-20 08:26发布

当运行骡ESB 3.2.1嵌入式服务器Tomcat内7.0.27(与web应用浇道执行),与HTTP端点的流的执行期间,在发送响应返回给调用者,将引发一个例外:

java.lang.NoSuchMethodError: org.apache.tomcat.util.http.ServerCookie.appendCookieValue(Ljava/lang/StringBuffer;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)V

异常下面:

org.mule.api.MuleRuntimeException: Connector that caused exception is: connector.http.mule.default

    at org.mule.transport.AbstractConnector.handleWorkException(AbstractConnector.java:2034)

    at org.mule.transport.AbstractConnector.workCompleted(AbstractConnector.java:1998)

    at org.mule.work.WorkerContext.run(WorkerContext.java:369)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

    at java.lang.Thread.run(Thread.java:662)

Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.http.ServerCookie.appendCookieValue(Ljava/lang/StringBuffer;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)V

    at org.mule.transport.http.CookieHelper.formatCookieForASetCookieHeader(CookieHelper.java:310)

    at org.mule.transport.http.transformers.MuleMessageToHttpResponse.createResponse(MuleMessageToHttpResponse.java:261)

    at org.mule.transport.http.transformers.MuleMessageToHttpResponse.transformMessage(MuleMessageToHttpResponse.java:90)

    at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:145)

    at org.mule.transformer.AbstractMessageTransformer.transform(AbstractMessageTransformer.java:93)

    at org.mule.DefaultMuleMessage.applyAllTransformers(DefaultMuleMessage.java:1387)

    at org.mule.DefaultMuleMessage.applyTransformers(DefaultMuleMessage.java:1348)

    at org.mule.DefaultMuleMessage.applyTransformers(DefaultMuleMessage.java:1331)

    at org.mule.transport.AbstractMessageReceiver.applyResponseTransformers(AbstractMessageReceiver.java:235)

    at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:214)

    at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:163)

    at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:150)

    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.doRequest(HttpMessageReceiver.java:299)

    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.processRequest(HttpMessageReceiver.java:258)

    at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:163)

    at org.mule.work.WorkerContext.run(WorkerContext.java:310)

Answer 1:

如果您使用的骡子3.2.1,您不能使用http:response-builder 。 该功能是不存在。 这就是为什么你不能使用它。

看看这个:

  • 这不是在doc: http://www.mulesoft.org/documentation-3.2/display/32X/HTTP+Transport+Reference
  • 这不是在源: https://github.com/mulesoft/mule/blob/mule-3.2.1/transports/http/src/main/java/org/mule/transport/http/config/HttpNamespaceHandler.java# L56


Answer 2:

我也有这个问题。 检查答案在这里。

骡子ESB不工作的cookie

总之,确保你已经提供的团体:“org.apache.tomcat”,名称:“土狼”,版本:“6.0.44”为骡子3.7.0。

因为你用不同版本的骡子3.2.1 的tomcat-5.5.23的util -在你的情况,你应该有其他库。

compile group: 'tomcat', name: 'tomcat-util', version: '5.5.23'

当您使用SpringBoot,它ovverides一个版本的一些库(取决于春季和Mule的版本),所以你会得到这个错误。 你有类ServerCookie但该方法appendCookieValue将会消失!

解决方案 - 与图书馆玩。 或者又了解决办法,编写自己的这些类失败的一个版本,并确保类加载器将使用您的类的版本。 (同样,创建具有相同的名称和包中的类来修复错误 - 是一个危险的和坏的事情...)



文章来源: NoSuchMethodError in Tomcat embedded MULE when executing http:set-cookie