Hi Glen,

Thank you for your answer.

Here is the code I have

@javax.jws.WebService(
    serviceName = "DeviceService",
    portName = "DevicePort",
    targetNamespace = "http://www.onvif.org/ver10/device/wsdl";,
wsdlLocation = "jar:file:/home/terelle/onvif/onvif-srv-0.1-jar-with-dependencies.jar!/META-INF/wsdl/devicemgmt.wsdl",
    endpointInterface = "org.onvif.ver10.device.wsdl.DevicePortType")
public class DevicePortTypeImpl implements DevicePortType {
...

The wsdl can be found at http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl but it needs some modification (service binding, etc)

Nothing more is added to the code ...

Even if I try with no wsdlLocation, I get another error ...
And I'm still wondering why it's running under eclipse but not outside ...


For Jetty, we use the embedded version ...


Hugo




On 10/28/2011 03:07 PM, Glen Mazza wrote:
I'm not sure what the problem is (telling us what type of values you're placing in for wsdlLocation may help -- IIRC it needs to be an absolute path, and I don't believe you can use a classpath: prefix either), Are you using embedded Jetty or standalone Jetty -- for the latter, you can just create a WAR (http://www.jroller.com/gmazza/entry/web_service_tutorial) which should be simpler and more robust anyway.

If you can store the WSDL outside of the JAR, and make a hardcoded reference to it from the Service class within the JAR, that might work, at least as an interim step before trying with the WSDL in the JAR.

HTH,
Glen

On 10/28/2011 07:20 AM, Hugo Terelle wrote:
Hi,

With cxf 2.4.2 and  2.4.3, I catch the following exception :

2011-10-28 13:06:34,830 INFO [ReflectionServiceFactoryBean] Creating Service {http://www.onvif.org/ver10/device/wsdl}DeviceService from WSDL: jar:file:/home/terelle/onvif/onvif-srv-0.1-jar-with-dependencies.jar!/META-INF/wsdl/devicemgmt.wsdl Exception in thread "main" javax.xml.ws.WebServiceException: java.lang.NullPointerException at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:350)
    at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:239)
    at eu.acic.onvif.NVTServer.<init>(NVTServer.java:81)
    at eu.acic.onvif.NVTServer.main(NVTServer.java:127)
Caused by: java.lang.NullPointerException
at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:369) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:505) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241) 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:157) at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:202) at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:433) at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:322)



I'm catching this exception when I do the following instruction:

DevicePortTypeImpl deviceImplementor = new DevicePortTypeImpl();
String serviceAddress = "http://0.0.0.0:8080/onvif/device_service";;
EndpointImpl epDevice = (EndpointImpl) Endpoint.create(serviceAddress, deviceImplementor);
epDevice.publish(serviceAddress);

OR with

DevicePortTypeImpl deviceImplementor = new DevicePortTypeImpl();
String serviceAddress = "http://0.0.0.0:8080/onvif/device_service";;
EndpointImpl epDevice = (EndpointImpl) Endpoint.publish(serviceAddress, deviceImplementor);


The Java code was generated from a WSDL with cxf-codegen-plugin (wsdl2java) and I just changed the wsdlLocation annotation in the "DevicePortTypeImpl" class.


My big problem is that it was always working under Eclipse, and now that I have to deploy a standalone JAR (built with mvn assembly:single instruction), it doesn't work... Even worst, I can put what I want as path in the wsdlLocation annotation, it's always working under Eclipse... And I can't deploy Eclipse on my customer system :)

For information, I use Jetty, nothing with JBoss, Glassfish and so on. It's a standalone application (the server was also generated with wsdl2java).

Help!!!

Regards,
Hugo Terelle


















Reply via email to