Java 存储在LinkedList中的对象<;T>;s can';JAX-WS RPC调用无法生存?
在开发使用JAX-WS RPC样式XML的服务器/客户机应用程序期间,我发现每当我在JAX-WS上使用Java 存储在LinkedList中的对象<;T>;s can';JAX-WS RPC调用无法生存?,java,xml,jax-ws,xml-rpc,Java,Xml,Jax Ws,Xml Rpc,在开发使用JAX-WS RPC样式XML的服务器/客户机应用程序期间,我发现每当我在JAX-WS上使用LinkedList作为参数或返回类型时,所述LinkedList的内容都会消失 我写了一个示例程序来演示这个问题。在这个应用程序中,创建了一个新的服务器“Vegeta”,客户端“Nappa”可以向它提问。每个句子都是一个链接列表,通过JAX-WSRPC在它们之间传递。这些LinkedList对象总是空着到达另一端 有人知道为什么会发生这种情况吗? 如果有帮助,我的演示代码如下。任何和所有的答案
LinkedList
作为参数或返回类型时,所述LinkedList
的内容都会消失
我写了一个示例程序来演示这个问题。在这个应用程序中,创建了一个新的服务器“Vegeta”,客户端“Nappa”可以向它提问。每个句子都是一个链接列表
,通过JAX-WSRPC在它们之间传递。这些LinkedList
对象总是空着到达另一端
有人知道为什么会发生这种情况吗?
如果有帮助,我的演示代码如下。任何和所有的答案将不胜感激
接口IServer是Nappa用来与Vegeta对话的接口:
避免直接返回集合。不要返回列表
,而是返回一个包含列表
的JavaBean。这将为您提供更详细的编组控制
另见:
列表
,而是返回一个包含列表
的JavaBean。这将为您提供更详细的编组控制
另见:
package com.stuffvegetasays;
import java.util.LinkedList;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
@WebService
@SOAPBinding(style = Style.RPC)
public interface IServer
{
@WebMethod abstract LinkedList<Word> answer(LinkedList<Word> question);
}
package com.stuffvegetasays;
import java.util.LinkedList;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService(endpointInterface = "com.stuffvegetasays.IServer")
public class Vegeta implements IServer
{
public static void main(String[] args)
{
Vegeta vegeta = new Vegeta();
System.out.println("Starting Server");
String serverAddress = "http://0.0.0.0:9000/Vegeta";
Endpoint serverEnd = Endpoint.create(vegeta);
serverEnd.publish(serverAddress);
System.out.println("Server Published!");
}
@Override
public LinkedList<Word> answer(LinkedList<Word> question)
{
System.out.println(question);
LinkedList<Word> answer = new LinkedList<Word>();
answer.add(new Word("\n\n"));
answer.add(new Word("It's "));
answer.add(new Word("over "));
answer.add(new Word("NINE "));
answer.add(new Word("THOUSAND!!!"));
return answer;
}
}
package com.stuffvegetasays;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.LinkedList;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class Nappa
{
// Do an RPC style call to the published server "Vegeta".
public static void main(String[] args) {
URL serverURL;
try
{
serverURL = new URL("http://localhost:9000/Vegeta/");
QName appServerQName = new QName("http://stuffvegetasays.com/", "VegetaService");
Service service = Service.create(serverURL, appServerQName);
IServer vegeta = service.getPort(IServer.class);
LinkedList<Word> question = new LinkedList<Word>();
question.add(new Word("Vegeta! "));
question.add(new Word("What "));
question.add(new Word("does "));
question.add(new Word("the "));
question.add(new Word("scouter "));
question.add(new Word("say "));
question.add(new Word("about "));
question.add(new Word("his "));
question.add(new Word("power "));
question.add(new Word("level?"));
System.out.println(question);
LinkedList<Word> quote = vegeta.answer(question);
System.out.println(quote);
}
catch (MalformedURLException e)
{
System.err.println(e.getMessage());
e.printStackTrace();
}
}
}
package com.stuffvegetasays;
public class Word
{
String value;
public Word(String value)
{
this.value = value;
}
public String toString()
{
return value;
}
}