服务端:
1 import java.util.ArrayList;
2 import java.util.List;
3 import javax.jws.WebMethod;
4 import javax.jws.WebService;
5 import javax.jws.soap.SOAPBinding;
6
7 @WebService(targetNamespace = "http://jdk.study.hermit.org/testlist")
8 @SOAPBinding(style = SOAPBinding.Style.RPC)
9 public class GetList {
10 @WebMethod
11 public List<UserInfo> sayHello(int n) {
12 List<UserInfo> userlist = new ArrayList<UserInfo>();
13 for (int i = 0; i < n; i++) {
14 UserInfo user = new UserInfo();
15 user.setId(i);
16 user.setName("name"+i);
17 userlist.add(user);
18 }
19 return userlist;
20 }
21 }
启动时报错:
1 严重: StandardWrapper.Throwable
2 Server Runtime Error: javax.xml.ws.WebServiceException
3 at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish(HttpEndpoint.java:269)
4 at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:87)
5 at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:59)
6 at javax.xml.ws.Endpoint.publish(Endpoint.java:156)
7 at WebServiceStarter.init(WebServiceStarter.java:21)
8 at javax.servlet.GenericServlet.init(GenericServlet.java:212)
9 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
10 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
11 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4044)
12 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
13 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
14 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
15 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
16 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
17 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
18 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
19 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
20 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
21 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
22 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
23 at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
24 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
25 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
26 at org.apache.catalina.core.StandardService.start(StandardService.java:451)
27 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
28 at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
29 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
30 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
31 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
32 at java.lang.reflect.Method.invoke(Method.java:597)
33 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
34 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
35 Caused by: javax.xml.ws.WebServiceException
36 at com.sun.xml.internal.ws.model.RuntimeModel.createJAXBContext(RuntimeModel.java:201)
37 at com.sun.xml.internal.ws.model.RuntimeModel.postProcess(RuntimeModel.java:79)
38 at com.sun.xml.internal.ws.modeler.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:255)
39 at com.sun.xml.internal.ws.server.RuntimeEndpointInfo.createSEIModel(RuntimeEndpointInfo.java:170)
40 at com.sun.xml.internal.ws.server.RuntimeEndpointInfo.init(RuntimeEndpointInfo.java:317)
41 at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish(HttpEndpoint.java:298)
42 at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish(HttpEndpoint.java:263)
43 31 more
44 Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
45 java.util.List is an interface, and JAXB can't handle interfaces.
46 this problem is related to the following location:
47 at java.util.List
48
49 at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:66)
50 at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:361)
51 at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:217)
52 at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:76)
53 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
54 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
55 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
56 at java.lang.reflect.Method.invoke(Method.java:597)
57 at com.sun.xml.internal.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:76)
58 at com.sun.xml.internal.ws.model.RuntimeModel$1.run(RuntimeModel.java:196)
59 at java.security.AccessController.doPrivileged(Native Method)
60 at com.sun.xml.internal.ws.model.RuntimeModel.createJAXBContext(RuntimeModel.java:193)
61 37 more
62 2007-1-19 9:53:07 org.apache.catalina.core.StandardContext loadOnStartup
63 严重: Servlet /java6.web.service threw load() exception
64 com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
65 java.util.List is an interface, and JAXB can't handle interfaces.
66 this problem is related to the following location:
67 at java.util.List
68
69 at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:66)
70 at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:361)
71 at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:217)
72 at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:76)
73 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
74 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
75 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
76 at java.lang.reflect.Method.invoke(Method.java:597)
77 at com.sun.xml.internal.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:76)
78 at com.sun.xml.internal.ws.model.RuntimeModel$1.run(RuntimeModel.java:196)
79 at java.security.AccessController.doPrivileged(Native Method)
80 at com.sun.xml.internal.ws.model.RuntimeModel.createJAXBContext(RuntimeModel.java:193)
81 at com.sun.xml.internal.ws.model.RuntimeModel.postProcess(RuntimeModel.java:79)
82 at com.sun.xml.internal.ws.modeler.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:255)
83 at com.sun.xml.internal.ws.server.RuntimeEndpointInfo.createSEIModel(RuntimeEndpointInfo.java:170)
84 at com.sun.xml.internal.ws.server.RuntimeEndpointInfo.init(RuntimeEndpointInfo.java:317)
85 at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish(HttpEndpoint.java:298)
86 at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish(HttpEndpoint.java:263)
87 at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:87)
88 at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:59)
89 at javax.xml.ws.Endpoint.publish(Endpoint.java:156)
90 at WebServiceStarter.init(WebServiceStarter.java:21)
91 at javax.servlet.GenericServlet.init(GenericServlet.java:212)
92 at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161)
93 at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981)
94 at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4044)
95 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350)
96 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
97 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
98 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
99 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
100 at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
101 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
102 at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
103 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
104 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
105 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
106 at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
107 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
108 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
109 at org.apache.catalina.core.StandardService.start(StandardService.java:451)
110 at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
111 at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
112 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
113 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
114 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
115 at java.lang.reflect.Method.invoke(Method.java:597)
116 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
117 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 修改服务端代码:
1 import java.util.ArrayList;
2 import javax.jws.WebMethod;
3 import javax.jws.WebService;
4 import javax.jws.soap.SOAPBinding;
5
6 @WebService(targetNamespace = "http://jdk.study.hermit.org/testlist")
7 @SOAPBinding(style = SOAPBinding.Style.RPC)
8 public class GetList {
9 @WebMethod
10 public ArrayList<UserInfo> getList(int n) {
11 ArrayList<UserInfo> userlist = new ArrayList<UserInfo>();
12 for (int i = 0; i < n; i++) {
13 UserInfo user = new UserInfo();
14 user.setId(i);
15 user.setName("name"+i);
16 userlist.add(user);
17 }
18 return userlist;
19 }
20 }
启动OK
但是客户端
执行wsimport -keep
http://localhost:8080/ListService?wsdl,一共生成了7个文件
AbstractCollection.java
AbstractList.java
ArrayList.java
GetList.java
GetListService.java
ObjectFactory.java
package-info.java
测试代码
1 package test;
2
3 import static org.junit.Assert.assertNotNull;
4 import org.hermit.study.jdk.testlist.ArrayList;
5 import org.hermit.study.jdk.testlist.GetList;
6 import org.hermit.study.jdk.testlist.GetListService;
7 import org.junit.Test;
8
9 public class TestList {
10 @Test
11 public void getList() {
12 GetListService service = new GetListService();
13 GetList obj = service.getGetListPort();
14
15 ArrayList userlist = obj.getList(5);
16 assertNotNull(userlist);
17
18 }
19 }
可以看到ArrayList userlist
= obj.getList(5);中的list是org.hermit.study.jdk.testlist.ArrayList;
而非util的list
郁闷,继续找资料看看怎么传list吧
posted on 2007-01-19 10:55
交口称赞 阅读(4664)
评论(6) 编辑 收藏 所属分类:
Java6