Arquillian JMS configuration
rm0han Aug 25, 2015 5:29 AMThere are no straightforward examples that show how JMS queues and template configuration files are loaded when using 'ShrinkWrap'. It may be easy for those who use ActiveMQ or Artemis or HornetQ. But we don't. We use it only for testing. Ours is MQ.
EnterpriseArchive ear = ShrinkWrap.create( ZipImporter.class,
"Ear.ear")
.importFrom(new File("Ear.ear"))
.as(EnterpriseArchive.class) ;
//now add the testClass and any test util classes that are not in the archive
JavaArchive testLibraryHelper = ShrinkWrap.create(JavaArchive.class)
.addClass("com.test.ExampleListener").addClass("com.test.UnitTest");
ear.addAsLibrary(testLibraryHelper);
File xbean = Maven.
resolver().
resolve("org.apache.xbean:xbean-spring:4.3")
.withoutTransitivity().asSingle(File.class);
File activemq = Maven.
resolver().
resolve("org.apache.activemq:activemq-spring:5.8.0")
.withoutTransitivity().asSingle(File.class);
File artemisjmsserver = Maven.
resolver().
resolve("org.apache.activemq:artemis-jms-server:1.0.0")
.withoutTransitivity().asSingle(File.class);
File activemqqall = Maven.
resolver().
resolve("org.apache.activemq:activemq-all:5.11.1")
.withoutTransitivity().asSingle(File.class);
File artemisserver = Maven.
resolver().
resolve("org.apache.activemq:artemis-server:1.0.0")
.withoutTransitivity().asSingle(File.class);
WebArchive war = ear.getAsType(WebArchive.class, "/Web.war");
war.addAsWebInfResource("applicationContext-Business.xml");
war.addAsWebInfResource("applicationContext-listener.xml");
war.addAsWebInfResource("applicationContext.xml");
war.addAsWebInfResource("artemis-roles.properties");
war.addAsWebInfResource("artemis-users.properties");
war.addAsWebInfResource("broker.xml");
war.addAsWebInfResource("spring-jms-beans.xml");
war.addAsWebInfResource("spring-beans-embedded.xml");
war.delete("/WEB-INF/applicationContext-sender.xml");
war.addAsLibraries(xbean);
war.addAsLibraries(artemisserver);
I have 5 files from an example I found.
1. artemis-roles.properties
2.artemis-users.properties
3.broker.xml
4.spring-beans-embedded.xml
5.spring-jms-beans.xml
I am loading all these into WEB-INF/lib. Is that correct ?
My broker.xml is
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:activemq"
xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd">
<jms xmlns="urn:activemq:jms">
<!--the queue used by the example-->
<queue name="exampleQueue"/>
</jms>
<core xmlns="urn:activemq:core">
<persistence-enabled>false</persistence-enabled>
<acceptors>
<acceptor name="in-vm">vm://0</acceptor>
</acceptors>
<!-- Other config -->
<security-settings>
<!--security for example queue-->
<security-setting match="#">
<permission type="createDurableQueue" roles="guest"/>
<permission type="deleteDurableQueue" roles="guest"/>
<permission type="createNonDurableQueue" roles="guest"/>
<permission type="deleteNonDurableQueue" roles="guest"/>
<permission type="consume" roles="guest"/>
<permission type="send" roles="guest"/>
</security-setting>
</security-settings>
</core>
</configuration>
But I get this when JBoss WildFly tries to deploy the EAR. The EAR exists.
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [broker.xml]
Offending resource: ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 23 in XML document from ServletContext resource [/WEB-INF/broker.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 23; columnNumber: 77; cvc-elt.1.a: Cannot find the declaration of element 'configuration'.
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:274)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:199)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:184)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:141)