2012-10-30 19 views
8

Tôi đã cố gắng tái cấu trúc việc triển khai Activiti của mình vào sử dụng CDI nhưng gặp phải một số vấn đề. Tôi đã dành quá nhiều thời gian để giải quyết vấn đề này, nhưng tôi không thể để nó đi ... Tôi nghĩ rằng tôi đã giải quyết vấn đề ngay bây giờ, thiết lập một cuộc chiến có cấu trúc sạch sẽ mà không liên quan đến Activiti và đã có thể để tái sản xuất những gì tôi nghĩ là vấn đề chính.Vấn đề ServiceLoader trong WebLogic12c

Về cơ bản tôi có jar1 và jar2, cả CDI đều được bật bằng cách bao gồm META-INF/beans.xml. Cả hai lọ chỉ định một lớp trong META-INF/services/test.TheTest trỏ đến việc triển khai cục bộ cho jar tương ứng. jar1 phụ thuộc vào jar2. Ngoài ra, cả hai lọ chỉ ra một thực hiện của javax.enterprise.inject.spi.Extension, kích hoạt kịch bản. Trong mỗi thực hiện mở rộng, tôi có một phương pháp như:

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()); 
    } 
} 

Bây giờ, vấn đề của tôi là ServiceLoader không thấy bất kỳ triển khai trong cả hai trường hợp khi chạy WebLogic12c. Cùng một mã hoạt động hoàn toàn tốt trong cả Jboss 7.1.1 và Glassfish, liệt kê cả hai triển khai của giao diện test.TheTest.

Có công bằng khi cho rằng đây thực sự là một vấn đề trong WebLogic 12c hay tôi đang làm điều gì sai? Xin lưu ý rằng tôi chỉ đơn giản là cố gắng mô phỏng thiết lập sản xuất mà chúng tôi sử dụng khi kết hợp Activiti.

Kính trọng, /Petter

+0

bạn có bất kỳ cập nhật nào về điều này không? –

+0

Thật không may là không. Có vẻ là một vấn đề với classloading schematics trong WebLogic. Vui lòng đợi phiên bản WebLogic tiếp theo để xem có khắc phục được sự cố không. –

Trả lời

0

Có một công cụ phân tích Classloader cung cấp với WLS, có bạn nhìn thấy nếu điều này sẽ giúp chẩn đoán vấn đề của bạn.

Bạn có thể truy cập công cụ này bằng cách truy cập ip: port/wls-cat/index.jsp Nơi cổng sẽ là cổng của máy chủ được quản lý nơi ứng dụng của bạn được triển khai.