2011-02-02 6 views
1

마지막으로 메시지를 대기열에 넣는 활동에 대한 단위 테스트를 작성했습니다. 메시지가 해당 대기열에 놓이면 즉시 메시지 구동 Bean이 처리를 시작합니다. 하지만 단위 테스트에서 MDB를 테스트하고 싶지는 않습니다. OpenEJB에 어떻게 무시할 수 있습니까?MDB를 무시하도록 OpenEJB에 알리기

나는 몇 가지 속성과 OpenEJB를 설정 : 내가 openejb.deployments.classpath.exclude을 설정해야합니다 알고

p.setProperty(Context.INITIAL_CONTEXT_FACTORY, 
      "org.apache.openejb.client.LocalInitialContextFactory"); 
    p.setProperty("openejb.deployments.classpath.include", ".*"); 
    p.setProperty("openejb.localcopy", "false"); 

    // Messaging 
    p.put("MyJmsResourceAdapter", 
      "new://Resource?type=ActiveMQResourceAdapter"); 
    // Do not start the ActiveMQ broker 
    p.put("MyJmsResourceAdapter.BrokerXmlConfig", ""); 
    p.put("MyJmsConnectionFactory", 
      "new://Resource?type=javax.jms.ConnectionFactory"); 
    p.put("MyJmsConnectionFactory.ResourceAdapter", "MyJmsResourceAdapter"); 
    p.put("queue/MyQueue", 
      "new://Resource?type=javax.jms.Queue"); 

, 그러나 나는 올바른 값을 알아낼 수 없습니다 :

p.setProperty("openejb.deployments.classpath.exclude", "org.example.mdb.*"); 

내 클래스의 이름은 예를 들어를 org.example.mdb.MyMDB.

+0

이 속성은 클래스 경로의 개별 클래스를 필터링하지 않고 실제 클래스 경로 자체를 필터링합니다. 나는. 항아리와 디렉토리는 배포되는 "모듈"이됩니다.개별 클래스에 include/exclude를 사용하려면 비슷한 기능이 필요합니다. 믿을 수 없을 정도로 유용 할 것입니다. –

답변

1

그냥 내 2 센트 :

  • Loading Deployments from the Classpath에서 ".*org/example/mdb.*" or ".*org.example.mdb.*"
  • 을 시도 :

    참고 기본적으로 이러한 설정 은 OpenEJB를 않습니다 주석 구성 요소에 대한 스캔 할 때 어떤 항아리 어떤 영향을 줄 것 설명자가 발견되었습니다. 당신은 또한 기술자를 포함 할 밖으로 항아리를 필터링하기 위해 이러한 설정을 사용 를 원하시면, true로

    openejb.deployments.classpath.filter.descriptors

    속성을 설정합니다. 기본값은 우리는 그 기능이없는

+1

첫 번째 표현식은 ". * org/example/mdb. *"입니다. OpenEJB는 classpath 값을 기반으로 클래스를 제외하고 포함하므로 분리 기호로 "/"를 사용해야합니다. 귀하의 경우 다른 옵션은 ". */MyMDB. *"일 수 있습니다. 또는 "MDB"를 Message Driven Bean의 접미사로 사용하는 경우 ". * /. * MyMDB. *" – magarciaschopohl

1

거짓이지만, 조금 해킹을 원한다면 쉽게 추가 할 수 있습니다 - 새로운 공헌과 기여는 항상 환영합니다.

This class 정확히 원하는 작업을 수행 할 수 있습니다. 그리고 원하지 않는 몇 가지 사항 : 모든 MDB 및 JMS 자원 참조 (좋은 부분)를 제거하고 모든 엔티티 bean 및 지속성 단위를 제거합니다 참조 (아마 원하지 않는 부분). 우리는 ActiveMQ 또는 OpenJPA가로드되었을 때 디버깅 문제로 인해 작성했습니다. 당신이 그것을 청소했다면 우리는 그것을 기꺼이 받아 들여 그것을 특징으로 지원할 것입니다.

strips out all web services과 유사한 기능이 있습니다. 특정 시스템 등록 정보가 설정된 경우 ConfigurationFactory에 설치됩니다. 모든 주석 및 XML 메타 데이터도 인 (하나의 객체 트리에 병합됩니다 OpenEJB를에 있기 때문에 사실 ConfigurationFactory

에 기본적으로 같은 장소에서 비슷한 플래그를 사용하여 "MDB & JMS"제거제를 연결하기 쉬워야한다 JAXB 트리)를 사용하면 실제로 배포되기 전에 앱의 강력한 변형을 수행 할 수 있습니다. 모의 버전을 위해 특정 빈을 예를 들어 교체하십시오.

훌륭한 기능을 제공하지만 아직 작업 할 시간이 없다고 생각하는 것 중 하나입니다. 나는. 우리가 배포를 위해 보내기 전에 사람들이 트리를 망쳐 놓을 수있는 깨끗한 고리를 만듭니다. 이것을 읽는 누군가는 뛰어 들어가서 그것을 찌를 수 있습니다 (예. 오픈 소스!).