Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WebLogic12c中的ServiceLoader问题_Weblogic_Cdi_Serviceloader - Fatal编程技术网

WebLogic12c中的ServiceLoader问题

WebLogic12c中的ServiceLoader问题,weblogic,cdi,serviceloader,Weblogic,Cdi,Serviceloader,我一直在尝试将Activiti实现重构为使用CDI,但遇到了一些问题。我已经花了太多的时间试图解决这个问题,但我就是不能让它过去……我想我现在已经把问题解决了,建立了一场没有激进分子参与的干净的结构化战争,并且能够重现我认为的主要问题 基本上我有jar1和jar2,它们都是通过包含META-INF/beans.xml来启用CDI的。两个jar都在META-INF/services/test中指定了一个类。test指向各自jar的本地实现。jar1依赖于jar2。另外,两个JAR都指向javax.

我一直在尝试将Activiti实现重构为使用CDI,但遇到了一些问题。我已经花了太多的时间试图解决这个问题,但我就是不能让它过去……我想我现在已经把问题解决了,建立了一场没有激进分子参与的干净的结构化战争,并且能够重现我认为的主要问题

基本上我有jar1和jar2,它们都是通过包含META-INF/beans.xml来启用CDI的。两个jar都在META-INF/services/test中指定了一个类。test指向各自jar的本地实现。jar1依赖于jar2。另外,两个JAR都指向javax.enterprise.inject.spi.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());
    }
}
public-void-afterDeploymentValidation(
@观察AfterDeploymentValidation事件,BeanManager(BeanManager){
System.out.println(“In jar1扩展”);
ServiceLoader=ServiceLoader.load(test.class);
迭代器serviceIterator=loader.Iterator();
List discoveredLookups=new ArrayList();
while(serviceIterator.hasNext()){
测试serviceInstance=(测试)serviceIterator.next();
discoveredLookups.add(serviceInstance);
System.out.println(serviceInstance.getClass().getName());
}
}
现在,我的问题是在运行WebLogic12c时,
ServiceLoader
在这两种情况下都看不到任何实现。同样的代码在Jboss 7.1.1和Glassfish中都能很好地工作,列出了test.TheTest接口的两种实现

假设这确实是WebLogic12c中的一个问题,或者我做错了什么,这公平吗?请记住,我只是试图模仿我们在合并Activiti时使用的生产设置

问候,,
/Petter

WLS提供了一个类加载器分析工具,您是否看到它是否有助于诊断您的问题

您可以通过访问ip:port/wls cat/index.jsp访问此工具
Where port将是部署应用程序的托管服务器的端口。

您对此有任何更新吗?遗憾的是,没有。WebLogic中的类加载示意图似乎存在问题。急切地等待下一版本的WebLogic,看看这是否能解决问题。