2016-12-02 2 views
0

Weblogic 12c에서 Message Driven Bean의 인스턴스/스레드를 하나만 가질 수있는 방법은 무엇입니까? 여기 을 정의Weblogic Message Driven Bean의 인스턴스/스레드를 하나만 갖는 방법

나는 "최대 콩 -에 - 무료 풀"에 대한 동등한 주석 속성을 찾을 수 없습니다 https://docs.oracle.com/cd/E24329_01/web.1211/e24977/summary.htm#WLMDB1385

자바 코드 : -

@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
     @ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "jms/myConnectionFactory"), 
     @ActivationConfigProperty(propertyName = "destinationJndiName", propertyValue = "jms/myQueue"), 
     @ActivationConfigProperty(propertyName = "MaxPoolSize", propertyValue = "1") }) 
public class JayMDB implements MessageListener { 

추가 참조 : https://docs.oracle.com/cd/E24329_01/web.1211/e24390/mdbtuning.htm#PERFM271

+0

를 구동 목. 요청이 쇄도하고있는 주요 시간대에 큰 수영장을 원하지 않는 이유는 무엇입니까? – duffymo

+0

시도해 보셨습니까? WLS 12c에서 실행 가능할 수도 있습니다. http://stackoverflow.com/questions/8939292/how-to-set-max-pool-size-in-mdb-on-weblogic-10-3 – Filip

+0

@Filip 감사합니다. 그. 사실 weblogic-application.xml을 사용하지 않았으며 xml과 모든 anotations만을 사용했습니다. 희망은 XML과 주석을 혼합 할 수있을 것입니다. – Jay

답변

1

weblogic의 작업 관리자를 사용해 보았습니까? 관리 콘솔에서 -> Create one에서 새로운 최대 스레드 용량 제약 조건에 1을 할당하고이를 작업 관리자에 할당합니다. MDB에서이 작업 관리자를 사용하십시오 (예 : weblogic-ra.xml을 설정).

이 경우 MDB가 대상으로하는 노드별로 스레드가 하나만 있습니다.

+0

고마워요. 이미 Workmanagers를 사용하여이 문제를 해결했습니다 ... – Jay

0

의견을 보내 주셔서 감사합니다. 예 작업 관리자 & max-beans-in-free-pool, maxSession 속성의 조합으로이 문제를 해결했습니다. 후자가 필요한 사람들을위한 제 전체 코드가 있습니다.

weblogic.xml의

<?xml version='1.0' encoding='UTF-8'?> 
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.6/weblogic-web-app.xsd"> 
    <session-descriptor></session-descriptor> 
    <jsp-descriptor></jsp-descriptor> 
    <container-descriptor></container-descriptor> 
    <work-manager> 
    <name>WorkManager-MDB</name> 
    <max-threads-constraint> 
     <name>MaxThreadsConstraint-MDB</name> 
     <count>1</count> 
    </max-threads-constraint> 
    </work-manager> 
</weblogic-web-app> 

웹 로직에서 EJB-jar.xml의

<?xml version='1.0' encoding='UTF-8'?> 
<weblogic-ejb-jar xmlns="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-ejb-jar http://www.oracle.com/technology/weblogic/weblogic-ejb-jar/1.1/weblogic-ejb-jar.xsd"> 

    <weblogic-enterprise-bean> 
     <ejb-name>JayMDB</ejb-name> 

     <message-driven-descriptor> 
      <pool> 
       <max-beans-in-free-pool>1</max-beans-in-free-pool> 
      </pool> 
     </message-driven-descriptor> 
    </weblogic-enterprise-bean> 

</weblogic-ejb-jar> 

메시지 병처럼 보인다 콩

@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
@ActivationConfigProperty(propertyName = "connectionFactoryJndiName", propertyValue = "jms/myConnectionFactory"), 
@ActivationConfigProperty(propertyName = "destinationJndiName", propertyValue = "jms/myQueue"), 
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "1")}) 
public class JayMDB implements MessageListener { 
관련 문제