Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WSDL优先:CXF代码生成展开/裸_.net_Web Services_Cxf - Fatal编程技术网

.net WSDL优先:CXF代码生成展开/裸

.net WSDL优先:CXF代码生成展开/裸,.net,web-services,cxf,.net,Web Services,Cxf,我有点困惑,我相信我可能缺少一些配置,或者可能应该尝试CXF以外的其他配置 在Java中使用CXF时,我必须使用所有这些Holder对象,而使用.Net的人根本不需要使用Holder 我认为生成WSDL对每个人都有相同的结果,因为生成的代码相当于WSDL签名 更具体的示例(注释已删除): 在.net中,他们看到 public loginResponse loginRequest(loginRequest loginRequest1) { } 我在CXF上看到了 public void logi

我有点困惑,我相信我可能缺少一些配置,或者可能应该尝试CXF以外的其他配置

在Java中使用CXF时,我必须使用所有这些Holder对象,而使用.Net的人根本不需要使用Holder

我认为生成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);
公共无效登录请求(
java.lang.String语言,
java.lang.String应用程序,
java.lang.Boolean用户标识,
javax.xml.ws.Holder会话,
javax.xml.ws.Holder用户信息);

这是在visual studio中内部解决的,还是我在CXF中遗漏了什么?

这是根据JAX-WS规范制定的。每种语言或规范都规定了如何将WSDL映射到其特定语言。在CXF的情况下,JAX-WS规范规定方法要么是“裸”(类似于“LogginResponse logingRequest(LoginRequest In)”或者完全展开,其中响应对象也被展开映射到参数上,这就是您要得到的。没有.NET所做的半展开的事情可以展开参数,而不是响应


您可以通过向wsdl2java命令行传递-bareMethods参数来使用bare模式(假设是最新版本的CXF)

你能发布生成代码片段的wsdl吗?另外,我更新了.net示例,因为你说没有半解包方法是正确的。我之前遇到的问题是示例版本是2.2.3,直到我找到你自己的JIRA票证才知道有2.4.2。谢谢。