복붙노트

[SPRING] Spring JMS와 Oracle AQ

SPRING

Spring JMS와 Oracle AQ

누구든지 JMS JMS를 Oracle AQ 대기열과 함께 사용할 수 있습니까?

이 기사를 기반으로 AQ에 연결하려고합니다. http://blog.nominet.org.uk/tech/2007/10/04/spring-jms-with-oracle-aq/

하지만 지금이 오류가 나타납니다. JMS-137 : ADT 페이로드가있는 대상에 대해 페이로드 팩토리를 지정해야합니다.

이걸로 어떤 도움이 많이 감사합니다

감사 Damien

해결법

  1. ==============================

    1.그 오류는 실제로 작동하고 있지만 큐에 들어오는 객체를 생성하기위한 페이로드 팩토리를 제공하지 않는다는 것을 알려줍니다. 수신기를 만들 때 그렇게합니다. 이 경우 내 페이로드는 XMLTYPE이므로 페이로드 팩토리 만 사용합니다.

    그 오류는 실제로 작동하고 있지만 큐에 들어오는 객체를 생성하기위한 페이로드 팩토리를 제공하지 않는다는 것을 알려줍니다. 수신기를 만들 때 그렇게합니다. 이 경우 내 페이로드는 XMLTYPE이므로 페이로드 팩토리 만 사용합니다.

    queueReceiver = ((AQjmsSession) queueSession).
       createReceiver(queue, XMLType.getORADataFactory());
    
  2. ==============================

    2.AnyDataType 또는 User Defined Payload를 대기열에 넣거나 대기열에서 제거하려는 경우 JDBC 유형 맵을 제공해야합니다.

    AnyDataType 또는 User Defined Payload를 대기열에 넣거나 대기열에서 제거하려는 경우 JDBC 유형 맵을 제공해야합니다.

    게시 한 링크에서이를 수행 할 수있는 가장 좋은 장소는 Oracle Destination FactoryBean.getObject입니다.

    필자의 경우 XMLType 인 Oracle LCR을 대기열에 넣고 싶었으므로 getObject에서 다음을 수행해야했습니다.

    public Object getObject() throws Exception {
        QueueConnection queueConnection = connectionFactory.createQueueConnection();
        AQjmsSession session = (AQjmsSession) queueConnection.createQueueSession(true,
                Session.SESSION_TRANSACTED);
        Map map = session.getTypeMap();
        map.put("SYS.XMLTYPE", Class.forName("oracle.xdb.XMLTypeFactory"));
        return session.getQueue(queueUser, queueName);
    }
    

    AnyDataType 페이로드를 기억하면 OCI JDBC 드라이버를 사용해야하므로 씬 드라이버는 그렇지 않습니다.

    커스텀 페이로드에 대한 더 자세한 정보는 여기에 있습니다. http://download.oracle.com/docs/cd/B19306_01/server.102/b14257/aq_stage.htm#sthref2705

  3. ==============================

    3.Spring을 사용하고 있다면 이것을 해결할 수있는 방법입니다 : http://blog.javaforge.net/post/30858904340/oracle-advanced-queuing-spring-custom-types

    Spring을 사용하고 있다면 이것을 해결할 수있는 방법입니다 : http://blog.javaforge.net/post/30858904340/oracle-advanced-queuing-spring-custom-types

    "탄력없는"환경에서 위의 블로그 게시물에서 설명한 것처럼 자신 만의 메시지 소비자를 만드십시오.

  4. from https://stackoverflow.com/questions/4450925/spring-jms-and-oracle-aq by cc-by-sa and MIT license