运行从wsdl2java cxf生成的webservice

时间:2012-11-13 18:14:18

标签: java wsdl cxf wsdl2java

我尝试使用cxf运行从wsdl生成的webservice。

  1. 获取示例wsdl(hello_world.wsdl)
  2. 从wsdl生成java代码
  3. 由于生成的代码中缺少服务实现,我从这里获得了GreeterImpl
  4. ' ant compile'很成功。
  5. ' ant GreeterServer'没有成功。
  6. 我错过了什么?


    compile:
    
    GreeterServer:
      [java] Starting Server
      [java] After implementor
      [java] Before publish
      [java] Exception in thread "main" java.lang.ExceptionInInitializerError
      [java]     at org.eclipse.jetty.util.component.AbstractLifeCycle.<clinit>(AbstractLifeCycle.java:33)
      [java]     at org.apache.cxf.transport.http_jetty.JettyHTTPDestination.activate(JettyHTTPDestination.java:178)
      [java]     at org.apache.cxf.transport.AbstractObservable.setMessageObserver(AbstractObservable.java:48)
      [java]     at org.apache.cxf.binding.AbstractBaseBindingFactory.addListener(AbstractBaseBindingFactory.java:97)
      [java]     at org.apache.cxf.binding.soap.SoapBindingFactory.addListener(SoapBindingFactory.java:901)
      [java]     at org.apache.cxf.endpoint.ServerImpl.start(ServerImpl.java:131)
      [java]     at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:349)
      [java]     at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:247)
      [java]     at org.apache.cxf.jaxws.spi.ProviderImpl.createAndPublishEndpoint(ProviderImpl.java:151)
      [java]     at javax.xml.ws.Endpoint.publish(Endpoint.java:57)
      [java]     at org.apache.hello_world_soap_http.Greeter_SoapPort_Server.<init>(Greeter_SoapPort_Server.java:21)
      [java]     at org.apache.hello_world_soap_http.Greeter_SoapPort_Server.main(Greeter_SoapPort_Server.java:26)
      [java] Caused by: java.lang.IllegalArgumentException: key can't be empty
      [java]     at java.lang.System.checkKey(System.java:774)
      [java]     at java.lang.System.getProperty(System.java:647)
      [java]     at org.eclipse.jetty.util.log.Log$1.run(Log.java:122)
      [java]     at java.security.AccessController.doPrivileged(Native Method)
      [java]     at org.eclipse.jetty.util.log.Log.<clinit>(Log.java:85)
      [java]     ... 12 more
      [java] Java Result: 1
    
    BUILD SUCCESSFUL
    Total time: 1 second
    

1 个答案:

答案 0 :(得分:1)

不确定会导致这种情况。看起来好像,你的JVM从System.getProperties()。propertyNames()返回一个null属性名。在调用cxf代码之前,你可以尝试类似的东西:

@SuppressWarnings("unchecked")
Enumeration<String> systemKeyEnum = (Enumeration<String>)System.getProperties().propertyNames();
while (systemKeyEnum.hasMoreElements()) {
    String key = systemKeyEnum.nextElement();
    String val = System.getProperty(key);
    System.out.println(key + ": " + val);
}

并看看它是否真的有效?