繁体   English   中英

从java web启动使用CXF Web服务

[英]Using CXF web service from java web start

更新:我已将我的问题提交给CXF用户的邮件列表, 这里

更新:我目前已经签署了所有的罐子。 我仍然无法以能够找到WSDL的方式获得CXF设置。 我的最后一次尝试是将WSDL放在我的WAr文件中,以便我可以通过Web浏览器访问它。 我将客户端内的wsdllocation设置为URL( http://www.example.com/app/example.wsdl )。 我现在得到以下异常:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
at com.sun.xml.internal.ws.util.xml.XmlUtil.createDefaultCatalogResolver(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(Unknown Source)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(Unknown Source)
at javax.xml.ws.Service.<init>(Unknown Source)

谷歌搜索在这方面几乎没有任何结果。

我正在使用Apache CXF从给定的WSDL创建Web服务客户端。 我遇到了问题但是当我尝试访问该服务时,我遇到了这个异常:

Can not initialize the default wsdl from ../resource/example.wsdl
Exception in thread "AWT-EventQueue-0" java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)

我没有签署我的Web启动应用程序,并且不愿意,因为我没有从客户端的计算机访问任何资源。 提到的WSDL打包在我的jar中。 问题是由CXF生成的客户端代码引起的:

    URL url = null;
    try {
        url = new URL("../resource/example.wsdl");
    } catch (MalformedURLException e) {
        System.err.println("Can not initialize the default wsdl from ../resource/example.wsdl");
        // e.printStackTrace();
    }
    WSDL_LOCATION = url;

如何正确地将CXF指向此WSDL? 我也担心类上的WebService注释:

@WebServiceClient(name = "Example", 
              wsdlLocation = "../resource/example.wsdl",
              targetNamespace = "http://services.example.com/") 

我还需要改变这个吗?

您将需要将该wsdlLocation更改为类路径:reference。

使用-wsdlLocation如图所示这里

经过一些错误和实验后,我设法让一切正常运作。 首先,确保cxf.jarwsdl4j.jar实际上在您的类路径上。 我以为我已经验证了这一点,但是因为我是通过webstart从jar中实例化客户端,这本身就是在WAR中打包的,所以我在构建过程中搞砸了cxf运行时的位置。 另外,在指定wsdl位置时,我不得不使用"classpath:my.wsdl" 我让自己很轻松,只需将wsdl放在与我的源相同的位置。

希望这可以帮助那些可能在某些方面做同样事情的人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM