java代码如下:
package com.erdb.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
@WebService
public class ServiceHello {
/**
* 生成客户端:
* wsimport -s E:\\GDHT_SOFTWARE\\中核设备可靠性数据库\\田湾项目\\SAP接口研发\\project\\TheClient\\src -p com.erdb.client -keep http://localhost:9001/Service/ServiceHello?wsdl
* 供客户端调用的方法
* @param name 传入参数
* @return List 返回结果
*/
public List<Student> getValue(String name){
// System.out.println(name);
// List<String> arrayString = new ArrayList<String>();
// arrayString.add("姓名:" + name);
// arrayString.add("性别:男");
// arrayString.add("年龄:25");
List<Student> arrayString = new ArrayList<Student>();
return arrayString;
}
// /***
// * @param mapName
// * @param mapObject
// * @return
// */
// public Map<String, Object> getMap(String mapName, String mapObject) {
// Map<String, Object> map = new HashMap<String, Object>();
// map.put(mapName, mapObject);
// return map;
// }
/**
* @param args
*/
public static void main(String[] args) {
Endpoint.publish("http://127.0.0.1:9001/Service/ServiceHello", new ServiceHello());
System.out.println("service success!");
}
}
package com.erdb.service;
public class Student {
public String name;
public String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
执行的时候控制台报以下错误:
Exception in thread "main" javax.xml.ws.WebServiceException: Unable to create JAXBContext
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:156)
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.postProcess(AbstractSEIModelImpl.java:84)
at com.sun.xml.internal.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:235)
at com.sun.xml.internal.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:328)
at com.sun.xml.internal.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:190)
at com.sun.xml.internal.ws.api.server.WSEndpoint.create(WSEndpoint.java:498)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.createEndpoint(EndpointImpl.java:246)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(EndpointImpl.java:170)
at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:113)
at javax.xml.ws.Endpoint.publish(Endpoint.java:220)
at com.erdb.service.ServiceHello.main(ServiceHello.java:45)
Caused by: java.security.PrivilegedActionException: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Class has two properties of the same name "name"
this problem is related to the following location:
at public java.lang.String com.erdb.service.Student.getName()
at com.erdb.service.Student
at public java.util.List com.erdb.service.jaxws.GetValueResponse._return
at com.erdb.service.jaxws.GetValueResponse
this problem is related to the following location:
at public java.lang.String com.erdb.service.Student.name
at com.erdb.service.Student
at public java.util.List com.erdb.service.jaxws.GetValueResponse._return
at com.erdb.service.jaxws.GetValueResponse
Class has two properties of the same name "sex"
this problem is related to the following location:
at public java.lang.String com.erdb.service.Student.getSex()
at com.erdb.service.Student
at public java.util.List com.erdb.service.jaxws.GetValueResponse._return
at com.erdb.service.jaxws.GetValueResponse
this problem is related to the following location:
at public java.lang.String com.erdb.service.Student.sex
at com.erdb.service.Student
at public java.util.List com.erdb.service.jaxws.GetValueResponse._return
at com.erdb.service.jaxws.GetValueResponse
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl.createJAXBContext(AbstractSEIModelImpl.java:143)
... 10 more
Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Class has two properties of the same name "name"
this problem is related to the following location:
at public java.lang.String com.erdb.service.Student.getName()
at com.erdb.service.Student
at public java.util.List com.erdb.service.jaxws.GetValueResponse._return
at com.erdb.service.jaxws.GetValueResponse
this problem is related to the following location:
at public java.lang.String com.erdb.service.Student.name
at com.erdb.service.Student
at public java.util.List com.erdb.service.jaxws.GetValueResponse._return
at com.erdb.service.jaxws.GetValueResponse
Class has two properties of the same name "sex"
this problem is related to the following location:
at public java.lang.String com.erdb.service.Student.getSex()
at com.erdb.service.Student
at public java.util.List com.erdb.service.jaxws.GetValueResponse._return
at com.erdb.service.jaxws.GetValueResponse
this problem is related to the following location:
at public java.lang.String com.erdb.service.Student.sex
at com.erdb.service.Student
at public java.util.List com.erdb.service.jaxws.GetValueResponse._return
at com.erdb.service.jaxws.GetValueResponse
at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:91)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:451)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:283)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:126)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1148)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:173)
at com.sun.xml.internal.bind.api.JAXBRIContext.newInstance(JAXBRIContext.java:96)
at com.sun.xml.internal.ws.developer.JAXBContextFactory$1.createJAXBContext(JAXBContextFactory.java:98)
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:151)
at com.sun.xml.internal.ws.model.AbstractSEIModelImpl$1.run(AbstractSEIModelImpl.java:143)
... 12 more
如果把 List<Student> 改成 List<String> 就没错了。请问为什么?如何解决?
跪求高手解答!!!
------解决思路----------------------
看你报错提示:是有多组数据
------解决思路----------------------
http://stackoverflow.com/questions/24366814/spring-jaxb-integration-class-has-two-properties-of-the-same-name
------解决思路----------------------
Student class里的全局变量请用private定义
------解决思路----------------------
Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Class has two properties of the same name "name" 意思很明显 你有2个类中都定义了public 的name 和 sex变量 所以冲突了 定义成 private 或者 去修改直接一个的名字 建议 用private
------解决思路----------------------
我也接点分 我也接点分 我也接点分
------解决思路----------------------
基础不扎实,属性私有,不然还要set 和get 有什么用!!
多看看基础的学习资料吧!