代码之家  ›  专栏  ›  技术社区  ›  Confusion

打包Spring管理的Axis2 web服务客户端

  •  1
  • Confusion  · 技术社区  · 15 年前

    我已经使用Axis2创建了一个web服务客户端。我想将客户机打包到一个jar中,这样我就可以在其他几个项目中使用它。客户端使用Axis2 WS-Security模块“rampart”。这个模块,rampart。mar(不是打字错误!)必须位于轴“存储库路径”上,位于名为“模块”的目录中。客户端还需要一个安全策略文件policy。xml。最后两个的位置是通过Spring注入的,但由于它们不会更改,所以我想将它们打包到jar中。

    如果插入文件对象,如:

    <bean id="webserviceStubFactory" class="com.company.WebserviceStubFactory">
        <constructor-arg value="classpath:policy.xml"/>
    </bean>
    

    当直接运行/测试项目时,它可以正常工作。然而,当您将其打包到一个罐子中时,您会得到

    java.io.FileNotFoundException: class path resource [policy.xml] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/path/to/webservice-0.8.jar!/policy.xml

    因此,问题基本上归结为:是否可以使用Spring在jar中注入一条路径(即使它只是/),并让其他库从该路径读取,就好像它是一个常规文件系统一样?我猜不是,但我想在开发/测试/生产环境上安装外部“axis存储库”并拥有rampart的多个副本之前确定一下。马尔到处躺着。

    1 回复  |  直到 15 年前
        1
  •  1
  •   skaffman    15 年前

    Spring可以做的只是隐藏底层JavaSEAPI的不一致性。各种 getXYZ Resource 接口在文档中附带了警告,例如 getFile() :

    Throws:
        IOException - if the resource cannot be resolved as absolute file path, 
        i.e. if the resource is not available in a file system
    

    Resource.getInputStream() 提取JAR资源的内容并将其复制到临时 File 在本地文件系统上,然后传递 文件 到Axis2。