【问题标题】:Running webservice that is generated from wsdl2java cxf运行从 wsdl2java cxf 生成的 web 服务
【发布时间】:2012-11-02 05:03:34
【问题描述】:

我正在尝试运行使用 cxf 从 wsdl 生成的 web 服务。

  1. 获取示例 wsdl (hello_world.wsdl)
  2. 从 wsdl 生成 java 代码
  3. 由于生成的代码中缺少服务实现,我从这里得到了 GreeterImpl
  4. 'ant compile' 成功。
  5. 'ant GreeterServer' 不成功。

我错过了什么?


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

【问题讨论】:

    标签: java wsdl cxf wsdl2java


    【解决方案1】:

    不确定是什么原因造成的。似乎不知何故,您的 JVM 从 System.getProperties().propertyNames() 返回了一个空属性名称。在调用 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);
    }
    

    看看这是否真的有效?

    【讨论】:

    • 是的,打印效果很好。我不知道是什么造成了问题。这是实际的项目文件。 source 谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2013-10-26
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多