我有点困惑,我相信我可能会错过一些配置,或者也许应该尝试除CXF之外的其他东西
在Java中使用CXF我必须使用所有这些Holder对象,而使用.Net的人根本不需要使用Holders。
我认为生成WSDL对每个人都有相同的结果,因为生成的代码等同于WSDL签名。
更具体的示例(删除注释):
在.net中他们看到了
public loginResponse loginRequest(loginRequest loginRequest1) { }
我在CXF上看到
public void loginRequest(
java.lang.String language,
java.lang.String application,
java.lang.Boolean userid,
javax.xml.ws.Holder<java.lang.String> session,
javax.xml.ws.Holder<java.lang.String> userinfo);
这是在视觉工作室内部解决的还是我在CXF中遗漏了什么?
答案 0 :(得分:1)
这是根据JAX-WS规范。每种语言或规范都规定了WSDL如何映射到其特定语言。在CXF的情况下,JAX-WS规范要求一个方法是“裸”(看起来像“LogginResponse logingRequest(LoginRequest in)”或完全展开,其中响应对象也被解包映射到参数上,这就是你正在进行。没有.NET打包的东西可以解开params而不是响应。
您可以通过将-bareMethods参数传递给wsdl2java命令行来使用裸模式(假设最新版本的CXF)