jboss 4.2.3 에서 jboss 5.0.0 RC1으로 오면서 디폴트가 jboss.mq 에서 jboss.messaging으로 변경되었다.

여러가지 상황을 종합해볼때 jboss.messaging이 낫다고 생각되어 jboss.messaing으로 옮길 겸 겸사겸사해서jboss5.0.RC1으로 upgrade한다.

Jboss.messaging 에 사용하는 Persistenence는 Sybase DB를 사용한다.

주의할 점
나는 EJB3.0에서 annotation을 사용해서 MDB configuration을 했었는데 jboss 4.2.3 에서는 temporary queue가 등록되어 별 문제 없었는데, jboss 5.0.Rc1에서는 temporary queue가 등록이 안되는 것 같다.
그래서
deploy/messaging/destination-service.xml 을 열어서 queue를 등록해야했다.
   <mbean code="org.jboss.jms.server.destination.QueueService"
      name="jboss.messaging.destination:service=Queue,name=CreateMoveoneFileQueue"
      xmbean-dd="xmdesc/Queue-xmbean.xml">
      <annotation>@org.jboss.system.deployers.managed.ManagementObjectClass(code=org.jboss.jms.server.destination.QueueServiceMO)</annotation>
      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
      <depends>jboss.messaging:service=PostOffice</depends>
   </mbean>
Queue이름은 CreateMoveoneFileQueue로 정했다.

JBoss 5.0을 인스톨하면 docs 폴더아래 examples 폴더 잘 살펴보면 jms 가 있는데
여기에 여러가지의 DB에 맞는 -service.xml 파일이 있다.
어울리는 넘으로 골라잡아라.

이넘을 deploy/messaging 아래에 두면되고 원래 있던 hsql*-service.xml 없애 버려라.

그리고 주의할 점 하나더.
기본적으로 clustering 기능이 true로 되어 있으므로 (난 clustering 싫어한다) 이넘을 없앨려면
-service.xml 파일 연다음
 <attribute name="Clustered">false</attribute> 이렇게 수정해라 (원래는 true 다.)
그리고 그 이하에 있는 mbean의 attribute 모두 삭제해버려라.

물론 -service.xml 에 deploy 폴더에 setting한 -ds.xml 파일에 언급된 DataSource 이름으로 수정해야한다.
default는 DefaultDS 인데, 설마 이대로 사용하는 사람을 없겠지.

그리고 내가 무척이나 고생한 것은 (실제로 예제를 수행하는데)
4.2.3 JMS library하고 5.0.0 JMS library 가고 compatible하지 않은 것이다.
즉, 서버환경이 5.0.0 library이면 client의 classpath 도 반드시 5.0.0에서 제공하는 library를 사용해야한다.
안그러면 JBM_ID_CACHE NULL 어쩌고 저쩌고 하는 에러 날거다.
Posted by
,