2011-08-05 4 views
0

rar 파일을 jboss의 배포 폴더에 배치하여 배포합니다. 7. 나중에 war 파일을 배포합니다.JCA ManagedConnectionFactory의 수명주기를 관리하는 방법은 무엇입니까?

이 커넥터는 standalone.xml의 정의에 따라 JNDI 위치에 바인딩됩니다.

배포 될 때 createConnectionFactory (ConnectionManager cm)가 기본적으로 실행됩니다. .

나는 클래스 로더

클래스 로더 contextClassLoader =는 Thread.currentThread() getContextClassLoader()의 도움으로이 방법을 몇 가지 집안일을 할;

I는 contextClassLoader가 null 배포시

문제가 초기 인 EJB를 사용하여 어댑터를 액세스하려고 할 때 createConnectionFactory (ConnectionManager 쓰 cm) 메소드가 다시 실행된다. 나중에 ejb에서 호출 할 때 값을 갖습니다. 효과적으로 내 관리가 실패합니다.

질문이 적절한 동작

  1. createConnectionFactory (ConnectionManager 쓰 cm)가 배치 =>의 시간에 실행된다?

  2. 어떻게 배포시이 방법을 실행하지 않도록 ironJacamar/jboss를 구성 할 수 있습니까?

기타 정보 : 제이 보스 AS7, 넷빈즈 7 Jdk1.7

편집 : 은 위의 동작은 올바른 것입니다. 사용하고있는 어댑터는 배포 당시 사용 된 클래스 로더가 런타임에 사용되는 클래스 로더와 동일해야합니다. 기본적으로 Thread.currentThread(). getContextClassLoader()를 사용합니다. ClassLoader를 사용하도록 변경했습니다. cl = MyManagedConnectionFactory.class.getClassLoader();

답변

1

배포 시점에 createConnectionFactory (ConnectionManager cm)가 실행됩니다.> 이것이 올바른 동작입니까?

당신은 컨테이너가 생성하고 JNDI 네임 스페이스에서 ConnectionFactory를 정의 결합으로 ConnectionFactory를 정의 그때,이 방법이라고 볼 기대가있는 경우 - 당신이 있음을 보여줍니다은 ConnectionManager를 복용 전화를 받고있는 사실을 이것은 관리 시나리오에서 실행 중입니다.

JCA 사양 중 6 장에서는 자원 어댑터의이 영역에 대해 자세히 설명하므로 명확한 대답이 있다고 생각했습니다. 편집 : 17 장 또한 관련성이 높습니다.

+0

네가 맞습니다. 사용하고있는 어댑터는 배포 당시 사용 된 클래스 로더가 런타임에 사용되는 클래스 로더와 동일해야합니다. 기본적으로 Thread.currentThread(). getContextClassLoader()를 사용합니다. 사용하도록 변경했습니다. ClassLoader cl = MyManagedConnectionFactory.class.getClassLoader(); –

관련 문제