从JavaWebStart使用CXFWeb服务

从JavaWebStart使用CXFWeb服务,java,web-services,cxf,java-web-start,Java,Web Services,Cxf,Java Web Start,更新:我已将我的问题提交给CXF用户的邮件列表,如下所示 更新:我目前已经签署了我所有的JAR。我似乎仍然无法以它可以找到WSDL的方式获得CXF设置。我最后一次尝试是将WSDL放在WAr文件中,这样我就可以通过web浏览器访问它。我将客户端内部的wsdllocation设置为URL()。我现在得到以下例外情况: Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError at com.sun.xml.

更新:我已将我的问题提交给CXF用户的邮件列表,如下所示

更新:我目前已经签署了我所有的JAR。我似乎仍然无法以它可以找到WSDL的方式获得CXF设置。我最后一次尝试是将WSDL放在WAr文件中,这样我就可以通过web浏览器访问它。我将客户端内部的wsdllocation设置为URL()。我现在得到以下例外情况:

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)
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 start应用程序进行签名,我不希望这样做,因为我没有从客户机访问任何资源。上面提到的内容打包在我的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更改为classpath:reference


使用-wsdlLocation,如图所示。

在犯了一些错误和做了一些实验之后,我成功地使一切正常工作。首先,确保
cxf.jar
wsdl4j.jar
实际位于类路径上。我想我已经验证了这一点,但因为我是通过webstart从jar内部实例化客户机的,而webstart本身就打包在一个WAR中,所以我把cxf运行时在构建过程中的位置搞乱了。另外,在指定wsdl位置时,我必须使用
“classpath:my.wsdl”
。我自己做的很简单,只是将wsdl放在与源代码相同的位置


希望这有助于在某些时候做同样事情的人

我到底要用什么来表示这个值呢?WSDL位于我的jar中,当它试图从user.dir.a classpath:/org/foo/bar.WSDL path加载时,仅指定WSDL名称会导致安全异常,我想。我尝试使用classpath:example.wsdl作为-wsdlLocation的输入,但在运行它时,我得到以下异常:无法从线程“AWT-EventQueue-0”java.security.AccessControlException中的classpath:WEXAuth.wsdl异常初始化默认wsdl:access denied(java.util.PropertyPermission user.dir read)是时候在CXF用户邮件列表上发布消息了。@b可能我现在就要这样做了!谢谢你的意见。