【发布时间】:2014-09-25 09:59:17
【问题描述】:
我正在sortedset.com(Apache CXF、TomEE)上试用 JAX-WS 示例,并对其进行了修改以包含一个复杂对象。我在org.apache.cxf.jaxb.Utils.getMethodXJTA(Utils.java:294) 收到NullPointerException。我的代码中是否缺少任何注释?还是有更多的事情要做来编组复杂的对象?
import javax.jws.WebService;
@WebService(
portName = "HelloTomEEPort",
serviceName = "HelloTomEEService",
targetNamespace = "http://sortedset.com/wsdl",
endpointInterface = "HelloTomEEWs")
public class HelloTomEEIMplementation implements HelloTomEEWs {
public Person getPerson(){
Person p = new Person();
p.setID(5);
p.setName("Tom");
return p;
}
}
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService(targetNamespace = "http://sortedset.com/wsdl")
public interface HelloTomEEWs {
@WebMethod
public Person getPerson();
}
import javax.xml.bind.annotation.XmlRegistry;
@XmlRegistry
public class Person{
/**
*
*/
private int iD;
private String name;
public int getID() {
return iD;
}
public void setID(int iD) {
this.iD = iD;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
严重:为 Servlet 部署 CXF 网络服务时出错 HelloTomEEIMplementation java.lang.NullPointerException 在 org.apache.cxf.jaxb.Utils.getMethodXJTA(Utils.java:294) 在 org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:375) 在 org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:329) 在 org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:232) 在 org.apache.cxf.jaxb.JAXBContextInitializer.addType(JAXBContextInitializer.java:222) 在 org.apache.cxf.jaxb.JAXBContextInitializer.walkReferences(JAXBContextInitializer.java:365) 在 org.apache.cxf.jaxb.JAXBContextInitializer.addClass(JAXBContextInitializer.java:329) 在 org.apache.cxf.jaxb.JAXBContextInitializer.begin(JAXBContextInitializer.java:183) 在 org.apache.cxf.service.ServiceModelVisitor.visitOperation(ServiceModelVisitor.java:109) 在 org.apache.cxf.service.ServiceModelVisitor.walk(ServiceModelVisitor.java:74) 在 org.apache.cxf.jaxb.JAXBDataBinding.initialize(JAXBDataBinding.java:325) 在 org.apache.cxf.service.factory.AbstractServiceFactoryBean.initializeDataBindings(AbstractServiceFactoryBean.java:86) 在 org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:490) 在 org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:697) 在 org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:550) 在 org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:265) 在 org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:214) 在 org.apache.openejb.server.cxf.CxfEndpoint.doServiceCreate(CxfEndpoint.java:101) 在 org.apache.openejb.server.cxf.pojo.PojoEndpoint.(PojoEndpoint.java:67) 在 org.apache.openejb.server.cxf.pojo.PojoWsContainer.createEndpoint(PojoWsContainer.java:70) 在 org.apache.openejb.server.cxf.pojo.PojoWsContainer.createEndpoint(PojoWsContainer.java:45) 在 org.apache.openejb.server.cxf.CxfWsContainer.start(CxfWsContainer.java:50) 在 org.apache.openejb.server.cxf.CxfService.createPojoWsContainer(CxfService.java:102) 在 org.apache.openejb.server.webservices.WsService.afterApplicationCreated(WsService.java:390) 在 org.apache.tomee.webservices.TomeeJaxWsService.afterApplicationCreated(TomeeJaxWsService.java:54) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)在 java.lang.reflect.Method.invoke(未知来源)在 org.apache.openejb.observer.ObserverManager$Observer.invoke(ObserverManager.java:149) 在 org.apache.openejb.observer.ObserverManager.fireEvent(ObserverManager.java:69) 在 org.apache.openejb.loader.SystemInstance.fireEvent(SystemInstance.java:108) 在 org.apache.tomee.catalina.TomcatWebAppBuilder.afterStart(TomcatWebAppBuilder.java:1608) 在 org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:113) 在 org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117) 在 org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 在 org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:168) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 在 java.util.concurrent.FutureTask.run(Unknown Source) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)在 java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(未知来源)
【问题讨论】:
-
在此处发布您的完整堆栈跟踪
-
@colossus 发布了踪迹
-
看起来像 CXF 中的一个错误。你用的是什么版本?
-
我使用的是最新的 TomEE 1.6.0.2 / CXF 2.6.14
标签: java jakarta-ee cxf jax-ws