gpt4 book ai didi

java - 骡子错误--2。调用方法失败。消息有效负载的类型为字符串

转载 作者:太空宇宙 更新时间:2023-11-04 06:22:02 26 4
gpt4 key购买 nike

我有一个 Mule 流,它调用一个方法并在有效负载中设置返回值。

这是我的流程的一部分

<flow name="PositiveFlow1" doc:name="PositiveFlow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="9293" doc:name="HTTP"/>
<invoke object-ref="TestUtils1"
method="getSignedClaimWrapper"
doc:name="Invoke"/>
<set-session-variable variableName="clientcontext" value="#[payload]" doc:name="Session Variable"/>
<flow-ref name="_subflow1" doc:name="Flow Reference"/>
</flow>

getSignedClaimWrapper 返回一个 Base64 编码的字符串。

这是我的堆栈跟踪。

Message               : Failed to invoke com.test.TestUtils@2cfe109a. Message payload is of type: String
Code : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString([B)Ljava/lang/String; (java.lang.NoSuchMethodError)
com.nimbusds.jose.util.Base64URL:64 (null)
2. Failed to invoke com.test.TestUtils@2cfe109a. Message payload is of type: String (org.mule.api.MessagingException)
org.mule.processor.InvokerMessageProcessor:178 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString([B)Ljava/lang/String;
at com.nimbusds.jose.util.Base64URL.encode(Base64URL.java:64)
at com.nimbusds.jose.util.Base64URL.encode(Base64URL.java:91)
at com.nimbusds.jose.Header.toBase64URL(Header.java:238)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
********************************************************************************

我猜这是因为 Mule 在处理 Base64 字符串方面有限制。因为 TestUtils 类的测试用例似乎可以完全正常工作。

任何有关可能发生的情况或可能的解决方案的见解将不胜感激!

来自骡流的 Spring Bean :

    <spring:bean id="TestUtils1"   class="com.package.TestUtils"/>    
</spring:beans>

Java类的相应部分:

public String getSignedClaimWrapper() throws KeyLoadException,
KeyNotFoundException, SignException, SignerNotInitializedException
{

String signedClaim = rsaTokenSigner.signClaim(claimsSet);// returns a base64 encoded string.

System.out.println("The signed claim is " + signedClaim);
return signedClaim;
}
}

最佳答案

mule 中包含的公共(public)编解码器库比您的 rsaTokenSigner 需要的库更旧。它确实包含该方法。

我会尝试使用 classpath override并将新的库包含在您的应用程序中。

关于java - 骡子错误--2。调用方法失败。消息有效负载的类型为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com