【问题标题】:Error while calling webservice from Xpage on Domino 9.0.1 FP8在 Domino 9.0.1 FP8 上从 Xpage 调用 web 服务时出错
【发布时间】:2017-05-22 09:12:41
【问题描述】:

将 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)

【问题讨论】:

  • 不是权限错误。它发生在我升级到 FP8 的两台服务器之一上。我花了一些时间试图修复它,然后决定放弃 Web 服务 - 它只是 1 - 并用其他东西替换它。这意味着我没有解决问题。我曾想过执行全新安装或与 IBM 一起打开 pmr,但最终都没有这样做
  • 我发现可以使用从数据库中导出的 java 消费者代码从 FP8 服务器上的 Xpage 运行我的 web 服务,根据提供的手册:link

标签: xpages lotus-domino


【解决方案1】:

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

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

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

为了从 domino 服务器上的 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";  
};

【讨论】:

    【解决方案2】:

    检查工作 FP7 服务器上的 java.policy 或 java.pol 文件。升级会定期覆盖 java.policy,并且有时会删除该文件。如果是安全相关的,服务器的Java策略肯定不同。

    【讨论】:

    • 我从不更改原始 java.policy 设置。两台服务器上的 java.pol 内容相同。我想在 9.0.1 FP8 上有不同的 JAX-WS 实现。
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 在测试 Watson Work Services Java SDK 时,我在 NSF 中使用 Gson 的代码时遇到过这种情况,但我从未使用低于 FP7 或代码在插件中的任何东西进行测试。对于 WWS Java SDK,我还必须添加 permission java.lang.RuntimePermission "accessDeclaredMembers";
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    相关资源
    最近更新 更多