在 Domino 9.0.1 FP8 上从 Xpage 调用 Web 服务时出错



将 Domino 升级到 9.0.1 FP8 后,我在尝试从 XPage 调用 CXF WebService 使用者时遇到以下错误:

MASM0001:找不到默认配置文件 [ jaxws-tubes-default.xml ]

相同的代码在 Domino 9.0.1 FP7 上工作正常。存根作为 jar 导入并授予权限:RuntimePermission "setContextClassLoader" 和 ReflectPermission "suppressAccessChecks"。

这看起来像是与安全相关的问题,因为授予所有权限(生产服务器不接受(允许我在 9.0.1 FP8 上运行代码。

有没有人经历过同样的事情或知道这种行为的原因?

MASM0001: Default configuration file [ jaxws-tubes-default.xml ] was not found. For more detailed information, please consult error-log-0.xml located in /usr/notes/domino/workspace/logs
java.lang.IllegalStateException: MASM0001: Default configuration file [ jaxws-tubes-default.xml ] was not found
    at com.sun.xml.internal.ws.assembler.MetroConfigLoader.init(MetroConfigLoader.java:139)
    at com.sun.xml.internal.ws.assembler.MetroConfigLoader.<init>(MetroConfigLoader.java:116)
    at com.sun.xml.internal.ws.assembler.TubelineAssemblyController.getTubeCreators(TubelineAssemblyController.java:90)
    at com.sun.xml.internal.ws.assembler.MetroTubelineAssembler.createClient(MetroTubelineAssembler.java:115)
    at com.sun.xml.internal.ws.client.Stub.createPipeline(Stub.java:340)
    at com.sun.xml.internal.ws.client.Stub.<init>(Stub.java:307)
    at com.sun.xml.internal.ws.client.Stub.<init>(Stub.java:240)
    at com.sun.xml.internal.ws.client.Stub.<init>(Stub.java:255)
    at com.sun.xml.internal.ws.client.sei.SEIStub.<init>(SEIStub.java:96)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getStubHandler(WSServiceDelegate.java:827)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:816)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:449)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:417)
    at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:399)
    at javax.xml.ws.Service.getPort(Service.java:130)
    at eu.europa.ec.taxud.vies.services.checkvat.CheckVatService.getCheckVatPort(CheckVatService.java:56)

我在从 Java 代理访问 Web 服务时遇到了同样的错误。在 FP8+ 中,java.policyjava.pol文件中似乎需要另一个授权:

   permission java.io.FilePermission "${java.home}/lib/-", "read";  

jaxws-tubes-default.xml文件位于 lib 文件夹中的resources.jar文件中。

为了从多米诺服务器上的 Java 代理访问我的 Web 服务,我现在有一个包含以下内容的 java.pol 文件:

grant {
   permission java.lang.RuntimePermission "getClassLoader";
   permission java.lang.RuntimePermission "setContextClassLoader";
   permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
   permission java.io.FilePermission "${java.home}/lib/-", "read";  
};

检查工作 FP7 服务器上的 java.policy 或 java.pol 文件。升级会定期覆盖 java.policy,有时已知会删除该文件。如果它与安全相关,则服务器的 Java 策略必须不同。

我昨天遇到了另一个与 Java 安全相关的问题,也可能导致您的问题。我正在使用 GSON 进行 JSON 解析,但在升级到 FP8 后它停止工作并抛出安全错误:

Agent Manager: Agent  error: java.security.AccessControlException: 
  Access denied ("java.lang.RuntimePermission" "accessDeclaredMembers")

由于FP8升级als将JVM升级到Java 8,显然安全模型发生了一些变化。解决方案是将此额外权限添加到我的java.pol文件中:

grant {
   permission java.lang.RuntimePermission "accessDeclaredMembers";
};

最新更新