gpt4 book ai didi

grails - WSClient Soap客户端在grails/groovy中

转载 作者:行者123 更新时间:2023-12-02 15:14:25 24 4
gpt4 key购买 nike

我在soap中的cxf + WSClient有一些问题。

我正在用grails编写一个小工具,该工具必须对现有服务进行SOAP调用。

WSClient(groovyws-0.5.3-20100521.062225-1.jar)似乎是解决我的问题的完美解决方案。
但是,当我尝试实现对其中一项操作的调用时,遇到了两个问题。

问题#1调用某些操作时发生NullPointerException。

我已经找到了引发异常的代码

AbstractCXFWSClient.invokeMethod(String methodName, Object args)

if (!operationToBeInvoked.isUnwrapped()){
//Operation uses document literal wrapped style.
inputMessageInfo = operationToBeInvoked.getWrappedOperation().getInput();
} else {
inputMessageInfo = operationToBeInvoked.getUnwrappedOperation().getInput();
}

特别是 operationToBeInvoked.getWrappedOperation(),我在单元测试中隔离了代码,发现 operationToBeInvoked.getWrappedOperation()operationToBeInvoked.getWrappedOperation()都导致空对象。我试图弄清楚是什么原因引起的,但是我认为我已经不了解了。

问题2:WSClient.create(String classname)正在吃ClassNotFoundException(然后抛出NullPointerException)

基本上当我打以下电话时
def event = client.create("com.mypackage.MyBean");

我可以通过从浏览器浏览服务看到相同的bean。
<xs:complexType name="myBean">
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:long"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="facets" nillable="true" type="tns:beanBean"/>
<xs:element minOccurs="0" name="sortId" type="xs:string"/>
<xs:element minOccurs="0" name="itemId" type="xs:string"/>
<xs:element minOccurs="0" name="preview" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>

我得到了NPE。当我深入了解为什么获得NPE时,我发现它是因为WSClient上的类加载器找不到“com.mypackage.MyBean”而吃了ClassNotFoundException,然后不可避免地抛出了NPE。

编辑:我应该使用另一个客户端WSClient / cxf吗?我真的很想避免自己动手.....

最佳答案

基本上我没有找到答案。基本上,我基本上被迫卸载了两个插件和cxf,而没有使用常规的WSClient。

我所做的是为grails安装了ws-client插件,并且有效。

http://www.grails.org/plugin/ws-client

关于grails - WSClient Soap客户端在grails/groovy中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6439938/

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