当前位置: 代码迷 >> J2EE >> java webservice wsdl 启动报错,该如何解决
  详细解决方案

java webservice wsdl 启动报错,该如何解决

热度:621   发布时间:2016-04-17 23:01:05.0
java webservice wsdl 启动报错
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  有什么用!!

多看看基础的学习资料吧!
  相关解决方案