Sergey,
I have moved over to using the jax-ws and jax-rs but, i am still getting the
illegalAnnotationException when the soap endpoint starts up.
here is the method that starts the soap endpoint:
private static void createSoapService(Object serviceObj) {
JaxWsServerFactoryBean serviceFactory = new
JaxWsServerFactoryBean();
serviceFactory.setServiceClass(GoldenKey.class);
serviceFactory.setAddress("http://localhost:8080/soap");
serviceFactory.setServiceBean(serviceObj);
serviceFactory.getInInterceptors().add(new
LoggingInInterceptor());
serviceFactory.getOutInterceptors().add(new
LoggingOutInterceptor());
serviceFactory.create();
}
here is the GoldenKey class:
@WebService(targetNamespace = "http://com.upmc.tdc.server")
@Path("/")
public interface GoldenKey {
@Get
@Path("/patients/{dataSourceType}/{id}/{lastName}/{firstName}")
Patient getPatient(@PathParam("") GetPatient getPatient) throws
PatientNotFoundFault;
@Get
@Path("/patients")
Patients getPatients();
}
here is GetPatient:
@XmlRootElement(name = "GetPatient")
public class GetPatient {
private int id;
private int requestorId;
private String firstName;
private String lastName;
private String dataSourceType;
public String toString() {
String rtn = "";
if (id > 0) {
rtn += "id: " + id + "\n";
}
if (!StringUtils.isBlank(lastName)) {
rtn += "lastName: " + lastName + "\n";
}
if (!StringUtils.isBlank(firstName)) {
rtn += "firstName: " + firstName + "\n";
}
if (!StringUtils.isBlank(dataSourceType)) {
rtn += "dataSourceType: " + dataSourceType + "\n";
}
if (requestorId > 0) {
rtn += "requestorId: " + requestorId + "\n";
}
return rtn;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getRequestorId() {
return requestorId;
}
public void setRequestorId(int requestorId) {
this.requestorId = requestorId;
}
public String getDataSourceType() {
return dataSourceType;
}
public void setDataSourceType(String dataSourceType) {
this.dataSourceType = dataSourceType;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
The exception is:
INFO: Creating Service {http://com.upmc.tdc.server}GoldenKeyService from
class com.upmc.tdc.server.GoldenKey
Exception in thread "main"
org.apache.cxf.service.factory.ServiceConstructionException
at
org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:341)
at
org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:87)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:445)
at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:680)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:508)
at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:245)
at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)
at
org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
at
org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:148)
at
org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:183)
at com.upmc.tdc.server.Server.createSoapService(Server.java:75)
at com.upmc.tdc.server.Server.main(Server.java:35)
Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 1 counts
of IllegalAnnotationExceptions
Two classes have the same XML type name
"{http://com.upmc.tdc.server}getPatient". Use @XmlType.name and
@XmlType.namespace to assign different names to them.
this problem is related to the following location:
at com.upmc.tdc.server.GetPatient
at private com.upmc.tdc.server.GetPatient
com.upmc.tdc.server.jaxws_asm.GetPatient.arg0
at com.upmc.tdc.server.jaxws_asm.GetPatient
this problem is related to the following location:
at com.upmc.tdc.server.jaxws_asm.GetPatient
at
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException$Builder.check(IllegalAnnotationsException.java:102)
at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:472)
at
com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:302)
at
com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140)
at
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)
at
com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121)
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 javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:202)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:363)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
at
org.apache.cxf.jaxb.JAXBDataBinding.createContext(JAXBDataBinding.java:557)
at
org.apache.cxf.jaxb.JAXBDataBinding.createJAXBContextAndSchemas(JAXBDataBinding.java:497)
at
org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:324)
... 11 more
The jax-rs endpoint is working well.
Thanks for all your help.
Chris
--
View this message in context:
http://cxf.547215.n5.nabble.com/IllegalAnnotationExceptions-when-running-Restful-Http-Binding-Demo-tp3349642p3366157.html
Sent from the cxf-user mailing list archive at Nabble.com.