我有一个调用JAXWS服务的Junit测试。这在使用WAS 7的RAD 8中运行良好。我们使用WAS 8.5转换为RAD 9。我得到了例外。确切的例外因我尝试的每件新事物而异。旧服务只需要junit和JAXWS瘦客户端变量。当我这样做时,我得到一个例外说明如下:
java.lang.NoClassDefFoundError:com.ibm.ejs.ras.hpel.HpelHelper
我最终在插件目录中找到了hpel jar,但之后只是导致了下面的异常。我添加了公共记录,但没有效果。它有或没有发生。我在消息的URL末尾阅读了帮助文档,但是AFAIK,我没有在slf4j上使用jcl。我假设一些IBM支持层正在使用它。但这是一个junit测试中的JAXWS客户端。我不确定如何应用他们的建议。
我还添加了两个系统属性,我在网上看到推荐这些属性并没有产生差异: org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger org.apache.commons.logging.LogFactory = org.apache.commons.logging.impl.LogFactoryImpl
目前的例外是:
Caused by: java.lang.UnsupportedOperationException: Operation [getContextClassLoader] is not supported in jcl-over-slf4j. See also http://www.slf4j.org/codes.html#unsupported_operation_in_jcl_over_slf4j
at org.apache.commons.logging.LogFactory.getContextClassLoader(LogFactory.java:366)
at org.apache.commons.logging.impl.LogFactoryImpl.access$000(LogFactoryImpl.java:113)
at org.apache.commons.logging.impl.LogFactoryImpl$1.run(LogFactoryImpl.java:457)
at java.security.AccessController.doPrivileged(AccessController.java:229)
at org.apache.commons.logging.impl.LogFactoryImpl.loadClass(LogFactoryImpl.java:454)
at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:406)
... 54 more
我的代码非常简单:
MyDataService svc = new MyDataService();
MyDataDelegate port = svc.getMyDataPort();
BindingProvider bp = (BindingProvider)port;
Map<String, Object> context = bp.getRequestContext();
context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
port.myWebServiceEndpoint(listOfKeys);
以下内容出现在控制台中,并非源自我的程序,而且我从未在RAD 8 / WAS 7中看到过:
Oct 3, 2014 10:00:29 AM null null
INFO: ssl.disable.url.hostname.verification.CWPKI0027I
Oct 3, 2014 10:00:32 AM null null
SEVERE: security.JSAS1480I
Oct 3, 2014 10:00:32 AM null null
INFO: Client code attempting to load security configuration
Oct 3, 2014 10:00:32 AM null null
AUDIT: chain.started
答案 0 :(得分:3)
我确实遇到了源自LogFactory的“java.lang.UnsupportedOperationException”。我没有必要将任何jar文件添加到CLASSPATH中。我通过添加以下系统属性解决了它:
-Dorg.apache.commons.logging.LogFactory = org.apache.commons.logging.impl.SLF4JLogFactory
答案 1 :(得分:1)
我所拥有的是解决方案而不是解决方案。我不觉得我得到的是&#34;对&#34;。我不得不将jcl-over-slf4j.jar和slf4j-api.jar(均为1.7.5)添加到bootstrap类路径中。这似乎不应该在这里找到正确的解决方案。但它奏效了。