webservice cxf error:类的两个属性具有相同名称 "password"

时间:2023-03-09 18:39:26
webservice cxf error:类的两个属性具有相同名称 "password"

execption detail:

 Caused by: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:369)
at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:251)
at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:537)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1614)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1485)
... 42 more
Caused by: org.apache.cxf.service.factory.ServiceConstructionException
at org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:332)
at org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:478)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:690)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:540)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:252)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:205)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159)
at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:454)
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:334)
... 51 more
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
类的两个属性具有相同名称 "appno"
this problem is related to the following location:
at public java.lang.String com.taiping.svc.bean.CardPasswardCheckMessageDTO.getAppno()
at com.taiping.svc.bean.CardPasswardCheckMessageDTO
at private com.taiping.svc.bean.CardPasswardCheckMessageDTO com.taiping.svc.webservice.jaxws_asm.CardPasswardCheck.cardPasswardCheckMessageDTO
at com.taiping.svc.webservice.jaxws_asm.CardPasswardCheck
this problem is related to the following location:
at protected java.lang.String com.taiping.svc.bean.CardPasswardCheckMessageDTO.appno
at com.taiping.svc.bean.CardPasswardCheckMessageDTO
at private com.taiping.svc.bean.CardPasswardCheckMessageDTO com.taiping.svc.webservice.jaxws_asm.CardPasswardCheck.cardPasswardCheckMessageDTO
at com.taiping.svc.webservice.jaxws_asm.CardPasswardCheck
类的两个属性具有相同名称 "password"
this problem is related to the following location:
at public java.lang.String com.taiping.svc.bean.CardPasswardCheckMessageDTO.getPassword()
at com.taiping.svc.bean.CardPasswardCheckMessageDTO
at private com.taiping.svc.bean.CardPasswardCheckMessageDTO com.taiping.svc.webservice.jaxws_asm.CardPasswardCheck.cardPasswardCheckMessageDTO
at com.taiping.svc.webservice.jaxws_asm.CardPasswardCheck
this problem is related to the following location:
at protected java.lang.String com.taiping.svc.bean.CardPasswardCheckMessageDTO.password
at com.taiping.svc.bean.CardPasswardCheckMessageDTO
at private com.taiping.svc.bean.CardPasswardCheckMessageDTO com.taiping.svc.webservice.jaxws_asm.CardPasswardCheck.cardPasswardCheckMessageDTO
at com.taiping.svc.webservice.jaxws_asm.CardPasswardCheck

解决方法:

com.taiping.svc.bean.CardPasswardCheckMessageDTO

该类本来是这么定义的:

 @XmlRootElement(name = "REQUEST")
public class CardPasswardCheckMessageDTO { @XmlElement(name = "app_no")
protected String appno; @XmlElement(name = "password")
protected String password; public String getAppno() {
return appno;
} public void setAppno(String appno) {
this.appno = appno;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}

改为:

 @XmlRootElement(name = "REQUEST")
public class CardPasswardCheckMessageDTO { protected String appno; protected String password; public String getAppno() {
return appno;
} @XmlElement(name = "app_no")
public void setAppno(String appno) {
this.appno = appno;
} public String getPassword() {
return password;
} @XmlElement(name = "password")
public void setPassword(String password) {
this.password = password;
}
}

马上OK!