Pet*_*röm 8 weblogic cdi serviceloader
我一直试图将我们的Activiti实现重构为使用CDI但遇到了许多问题.我已经花了太多时间试图解决这个问题,但我不能放手......我想我已经把问题归结为现在,建立一个干净的结构化战争而不涉及Activiti并且能够重现我认为是主要问题.
基本上我有jar1和jar2,通过包含META-INF/beans.xml启用了CDI.两个jar都在META-INF/services/test中指定一个类.Test指向各个jar的本地实现.jar1取决于jar2.此外,两个jar都指向javax.enterprise.inject.spi.Extension的实现,触发方案.在Extension的每个实现中,我有一个方法,如:
public void afterDeploymentValidation(
@Observes AfterDeploymentValidation event, BeanManager beanManager) {
System.out.println("In jar1 extension");
ServiceLoader<TheTest> loader = ServiceLoader.load(TheTest.class);
Iterator<TheTest> serviceIterator = loader.iterator();
List<TheTest> discoveredLookups = new ArrayList<TheTest>();
while (serviceIterator.hasNext()) {
TheTest serviceInstance = (TheTest) serviceIterator.next();
discoveredLookups.add(serviceInstance);
System.out.println(serviceInstance.getClass().getName());
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是,ServiceLoader在运行WebLogic12c时,两种情况都没有看到任何实现.相同的代码在Jboss 7.1.1和Glassfish中都运行得非常好,列出了test.TheTest接口的两个实现.
假设这确实是WebLogic 12c中的一个问题或我做错了什么是公平的吗?请记住,我只是想模仿我们在使用Activiti时使用的生产设置.
此致,/ Petter
小智 0
WLS 提供了一个类加载器分析工具,您是否知道这是否有助于诊断您的问题。
您可以通过访问 ip:port/wls-cat/index.jsp 来访问此工具,其中 port 是部署应用程序的托管服务器的端口。
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |