将 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.policy
或java.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";
};