2008-09-30 4 views
4

Weblogic이 특정 EJB에 기본적으로 사용하는 optimization for collocated objects을 비활성화하는 방법이 있습니까?배열 된 객체에 대한 WebLogic로드 균형 조정 최적화 비활성화

편집 : 일부 컨텍스트 :

우리는 클러스터의 한 노드 내에서 실행 스케줄러 서비스가있다. 이는 역사적인 이유로 현재 변경할 수 없습니다.

이 서비스는 EJB를 호출하고 이러한 호출의로드를 조정하려고합니다. 불행하게도 모든 호출은 질문에서 언급 한 최적화 때문에 스케줄러 서비스를 호스팅하는 노드에서 실행됩니다.

사용자 지정로드 균형 조정 클래스를 코딩하려고 생각했지만이 최적화는로드 균형 조정 단계가 수행되기 전에 완료된 것 같습니다.

+0

해결 했습니까? 함께 배치 된 객체에 대한 WebLogic의 최적화를 비활성화하거나 사용자 정의 할 수 있습니까? – XpiritO

답변

0

웹 로직의 용기에 너무 익숙하지 않지만 자신의 자료를 읽지 않고는 말하지 않을 수 있습니다.

배열 된 객체 최적화를 따르지 않는 EJB 앞에 JMS (MDB) facade를 넣을 수있는 것 같습니다.

또는

당신의 스케줄러가 서블릿을 기반으로하는 경우, 당신은 용기 내에서 별도의 웹 응용 프로그램을 배포 할 수와는 EJB 클러스터에 대한 호출을 실행해야한다.

0

클러스터에 몇 개의 노드가 있습니까? 스케줄러 서비스가 배포 된 노드가 아닌 다른 노드에 EJB를 배포한다고 생각하십니까?

1

원격 EJB를 호출하려고하면 (로컬 ejbs에서로드 균형 조정은 Patrick이 설명한 것처럼 간접적 인 트릭을 통해서만 얻을 수 있습니다) 특정 서버 대신 클러스터의 주소를 사용하여 새 InitialContext를 만들어야합니다 . 이 새로운 IC는 귀하가 외국 클라이언트 인 것처럼 스텁을 제공하며, 동일한로드 밸런싱 전략을 적용합니다.

불행히도 이것은 EJB3 주입이 작동하지 않는다는 것을 의미합니다. 당신은 스스로 조회를해야 할 것입니다. 클러스터 IC에서 얻을 수있는 스텁을 직렬화 할 수있는 기회가 있습니다. 이것은 순수한 추론입니다. 다시 말해, 이후에 @Resource를 사용하여 바인드하고이를 주입 할 수 있습니다.

+0

예상대로 작동하지 않습니다. 우리가이 노드 (t3 : // node1, node2, node3)의 주소를 사용하여 새로운 InitialContext를 작성하면 weblogic은 여전히 ​​호출을 최적화합니다. – Michel

관련 문제