我有一个在 jax-ws 上实现的 java Web 服务。此 Web 服务返回用户的通用列表。它运行得很好:)。
@Stateless(name = "AdminToolSessionEJB")
@RemoteBinding(jndiBinding = "AdminToolSessionRemote")
@Remote(AdminToolSessionRemote.class)
@WebService
public class AdminToolSessionBean implements AdminToolSessionRemote {
...
@WebMethod(operationName = "GetAllUsers")
@WebResult(name = "AllUsers")
public List<User> getAllUsers() {
return userSessionRemote.getAllUsers();
}
...
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "User")
public class User extends BasicDataTransferObject {
...
@XmlElement(name = "Groups")
private List<Group> groups;
...
}
但我将在 .Net 应用程序中使用此 Web 服务。当我在 VS2005、VS2008 或 VS2010 中将此 Web 服务添加为 wcf 服务或 Web 服务时,VS 生成数组而不是通用列表“Group[] Groups”。我将“配置服务引用...”对话框中的“集合类型”更改为“System.Collections.Generic.List”,但 VS 生成数组:(。
我需要VS生成通用列表或ArrayList,我应该做什么?
最佳答案
我不知道如何在java中定义它。但是,在我的 C# 服务中,我的主要交易参数(采购订单)包含如下定义的行项目列表:
private LineItems LineItemsField;
[DataMember(Order=13, EmitDefaultValue=false)]
public LineItems LineItems {
get { return this.LineItemsField; }
set { this.LineItemsField = value; }
}
LineItems
是另一个 C# 类,定义如下:
[CollectionDataContract(Namespace="")]
public class LineItems : List<LineItem>
{
}
LineItem
是包含订单项字段的实际类。
LineItems
在 WSDL 中显示为:
<s:element minOccurs="0" maxOccurs="1" name="LineItems" type="tns:ArrayOfLineItem" />
ArrayOfLineItem
定义为:
<s:complexType name="ArrayOfLineItem">
<s:sequence>
<s:element minOccurs="0" maxOccurs="unbounded" name="LineItem" nillable="true" type="tns:LineItem" />
</s:sequence>
</s:complexType>
当然,LineItem
类本身是在其他地方定义的。希望这会有所帮助。
关于c# - 如何配置 WebService 返回 ArrayList 而不是 Array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2171457/