Web services Java/SpringJAX ws在.Net的WSDL中公开复杂类型
我正在尝试使用cxf创建JavaSpringWeb服务。我采用的是(自底向上)方法,即采用Java契约并注释代码以生成web服务 给定以下带注释的Web界面代码 网络界面:Web services Java/SpringJAX ws在.Net的WSDL中公开复杂类型,web-services,jax-ws,Web Services,Jax Ws,我正在尝试使用cxf创建JavaSpringWeb服务。我采用的是(自底向上)方法,即采用Java契约并注释代码以生成web服务 给定以下带注释的Web界面代码 网络界面: package org.webservice; import java.util.ArrayList; import java.util.Calendar; import javax.jws.WebMethod; @WebService public interface WebInterfaceI { @WebMe
package org.webservice;
import java.util.ArrayList;
import java.util.Calendar;
import javax.jws.WebMethod;
@WebService
public interface WebInterfaceI {
@WebMethod(operationName = "writeXML")
public String writeStuff(String objectType, String payloadXML,
String callerInfo, String options);
@WebMethod(operationName = "XML")
public ArrayList<String> readStuff(KeyValuePair Data, Calendar asOfDate,
KeyValuePair options);
}
package org.webservice;
import java.io.Serializable;
import java.util.List;
import javax.jws.WebService;
public class KeyValuePair implements Serializable {
private static final long serialVersionUID = 1L;
KeyValuePair() {
myValues = null;
myKeys = null;
}
KeyValuePair(List<String> keys, List<String> values) {
myValues = values;
myKeys = keys;
}
List<String> myValues;
List<String> myKeys;
}
public partial class keyValuePair: object, System.ComponentModel.INotifyPropertyChanged {
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
protected void RaisePropertyChanged(string propertyName) {
System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
if((propertyChanged != null)) {
propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
}
}
}
KeyValuePair的成员未公开,因此无法在客户端上填充一个
因此,问题是:
我想做的事情真的可能吗?
有没有一种简单的方法可以通过WSDL使用注释公开KeyVlauePair(我认为这就是所谓的数据契约?
还是必须用另一种方法(通过某种方式指定XSD文件和KeyValuePair)来完成?
我正在使用:
Spring工具套件2.9.2
cxf 2.6.1
.Net 4通过VS 2010。Hi@DUFF可能不是您将KeyValuePair对象填充到WEB服务中,您可以在KeyValuePair类上尝试类似的操作
public class KeyValuePair implements Serializable {
private static final long serialVersionUID = 1L;
List<String> myValues;
List<String> myKeys;
public KeyValuePair(List<String> keys, List<String> values) {
this.myKeys = keys;
this.myValues = values;
}
public List<String> getMyValues() {
return myValues;
}
public void setMyValues(List<String> myValues) {
this.myValues = myValues;
}
public List<String> getMyKeys() {
return myKeys;
}
public void setMyKeys(List<String> myKeys) {
this.myKeys = myKeys;
}
}
公共类KeyValuePair实现可序列化{
私有静态最终长serialVersionUID=1L;
列出我的价值观;
列出我的钥匙;
公钥值对(列表键、列表值){
this.myKeys=keys;
this.myValues=值;
}
公共列表getMyValues(){
返回myvalue;
}
公共void setMyValues(列出myValues){
this.myValues=myValues;
}
公共列表getMyKeys(){
归还我的钥匙;
}
公共无效设置MyKey(列出MyKey){
this.myKeys=myKeys;
}
}
在您可以为公开的WSDL文件填充KeyValuePair对象之前
希望这些帮助。:)嗨@DUFF也许你不会将KeyValuePair对象填充到WEB服务中,你可以在KeyValuePair类上尝试类似的方法
public class KeyValuePair implements Serializable {
private static final long serialVersionUID = 1L;
List<String> myValues;
List<String> myKeys;
public KeyValuePair(List<String> keys, List<String> values) {
this.myKeys = keys;
this.myValues = values;
}
public List<String> getMyValues() {
return myValues;
}
public void setMyValues(List<String> myValues) {
this.myValues = myValues;
}
public List<String> getMyKeys() {
return myKeys;
}
public void setMyKeys(List<String> myKeys) {
this.myKeys = myKeys;
}
}
公共类KeyValuePair实现可序列化{
私有静态最终长serialVersionUID=1L;
列出我的价值观;
列出我的钥匙;
公钥值对(列表键、列表值){
this.myKeys=keys;
this.myValues=值;
}
公共列表getMyValues(){
返回myvalue;
}
公共void setMyValues(列出myValues){
this.myValues=myValues;
}
公共列表getMyKeys(){
归还我的钥匙;
}
公共无效设置MyKey(列出MyKey){
this.myKeys=myKeys;
}
}
在您可以为公开的WSDL文件填充KeyValuePair对象之前
希望这些能帮上忙。:)谢谢,最后还是这么简单。我为犯了这样一个基本的错误而羞愧不已。谢谢,最后还是这么简单。我犯了这样一个基本的错误,感到羞愧。