<?xml version="1.0" encoding='utf-8'?>
<?xml-stylesheet type="text/xsl" href="https://nozaki.me/roller/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title type="html">Kohei Nozaki&apos;s blog</title>
    <subtitle type="html">Notes of my experiments</subtitle>
    <id>https://nozaki.me/roller/kyle/feed/entries/atom</id>
            <link rel="self" type="application/atom+xml" href="https://nozaki.me/roller/kyle/feed/entries/atom?cat=Arquillian" />
        <link rel="alternate" type="text/html" href="https://nozaki.me/roller/kyle/" />
        <updated>2024-05-01T08:28:13+00:00</updated>
    <generator uri="http://roller.apache.org" version="5.2.0">Apache Roller</generator>
        <entry>
        <id>https://nozaki.me/roller/kyle/entry/arquillian-ejb-jar-ear-testing</id>
        <title type="html">Arquillian EJB-JAR/EAR testing examples</title>
        <author><name>Kohei Nozaki</name></author>
        <link rel="alternate" type="text/html" href="https://nozaki.me/roller/kyle/entry/arquillian-ejb-jar-ear-testing"/>
        <published>2015-03-20T01:33:49+00:00</published>
        <updated>2015-03-20T01:47:34+00:00</updated> 
        <category term="Arquillian" label="Arquillian" />
        <category term="arquillian" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ear" scheme="http://roller.apache.org/ns/tags/" />
        <category term="ejb" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;There are plenty of examples of Arquillian testing with WAR deployments, but not for other deployments such as EJB-JAR or EAR. so I created some examples. these examples were tested against Arquillian 1.1.7.Final, using WildFly 8.2.0.Final as remote container. &lt;a href=&quot;https://github.com/lbtc-xxx/arquillian-ear&quot;&gt;the entire project can be obtained from GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_testing_against_ejb_jar_deployment&quot;&gt;Testing against EJB-JAR deployment&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Assume we have a simple EJB in a EJB-JAR project as follows:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@Stateless
@LocalBean
public class SomeEjb {
    public String hello(String name) {
        return &quot;Hello, &quot; + name;
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Test class:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@RunWith(Arquillian.class)
public class EjbJarIT {
    @Deployment
    public static Archive&amp;lt;?&amp;gt; createDeploymentPackage() {
        final Archive archive = ShrinkWrap.create(JavaArchive.class).addClass(SomeEjb.class);
        return archive;
    }

    @EJB
    private SomeEjb someEjb;

    @Test
    public void test() {
        Assert.assertEquals(&quot;Hello, Kyle&quot;, someEjb.hello(&quot;Kyle&quot;));
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The deployment will be a WAR through Arquillian&amp;#8217;s automatic enrichment process while the method annotated as &lt;code&gt;@Deployment&lt;/code&gt; produced &lt;code&gt;JavaArchive&lt;/code&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_testing_against_ear_deployment&quot;&gt;Testing against EAR deployment&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Assume we have a simple EAR project which depends on the preceding EJB-JAR project.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Test class:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@RunWith(Arquillian.class)
public class EarIT {

    @Deployment
    public static Archive&amp;lt;?&amp;gt; createDeploymentPackage() throws IOException {
        final JavaArchive ejbJar = ShrinkWrap.create(JavaArchive.class, &quot;ejb-jar.jar&quot;).addClass(SomeEjb.class);

        // Embedding war package which contains the test class is needed
        // So that Arquillian can invoke test class through its servlet test runner
        final WebArchive testWar = ShrinkWrap.create(WebArchive.class, &quot;test.war&quot;).addClass(EarIT.class);
        final EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class)
                .setApplicationXML(&quot;test-application.xml&quot;)
                .addAsModule(ejbJar)
                .addAsModule(testWar);
        return ear;
    }

    @EJB
    private SomeEjb someEjb;

    @Test
    public void test() {
        Assert.assertEquals(&quot;Hello, Kyle&quot;, someEjb.hello(&quot;Kyle&quot;));
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;code&gt;test-application.xml&lt;/code&gt; which will be embed as &lt;code&gt;application.xml&lt;/code&gt;:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;&amp;lt;application&amp;gt;
    &amp;lt;display-name&amp;gt;ear&amp;lt;/display-name&amp;gt;
    &amp;lt;module&amp;gt;
        &amp;lt;ejb&amp;gt;ejb-jar.jar&amp;lt;/ejb&amp;gt;
    &amp;lt;/module&amp;gt;
    &amp;lt;module&amp;gt;
        &amp;lt;web&amp;gt;
            &amp;lt;web-uri&amp;gt;test.war&amp;lt;/web-uri&amp;gt;
            &amp;lt;context-root&amp;gt;/test&amp;lt;/context-root&amp;gt;
        &amp;lt;/web&amp;gt;
    &amp;lt;/module&amp;gt;
&amp;lt;/application&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Also I have an another example that uses the EAR which Maven has produced because creating EAR with ShrinkWrap would be annoying in some complex cases. the &lt;code&gt;@Deployment&lt;/code&gt; method will embed the test WAR into the EAR, and add a &lt;code&gt;module&lt;/code&gt; element into existing &lt;code&gt;application.xml&lt;/code&gt; before returning the archive to Arquillian runtime. the &lt;code&gt;@Deployment&lt;/code&gt; method would be something like this:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;...
@Deployment
public static Archive&amp;lt;?&amp;gt; createDeploymentPackage() throws IOException {
    final String testWarName = &quot;test.war&quot;;

    final EnterpriseArchive ear = ShrinkWrap.createFromZipFile(
            EnterpriseArchive.class, new File(&quot;target/ear-1.0-SNAPSHOT.ear&quot;));

    addTestWar(ear, EarFromZipFileIT.class, testWarName);
...&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/lbtc-xxx/arquillian-ear/blob/master/ear/src/test/java/org/example/EarFromZipFileIT.java&quot;&gt;Whole source code is too long to paste here so refer my GitHub repository for details&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_references&quot;&gt;References&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.jboss.org/thread/201659&quot; class=&quot;bare&quot;&gt;https://developer.jboss.org/thread/201659&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http://stackoverflow.com/questions/14713129/how-to-add-test-classes-to-an-imported-ear-file-and-run-server-side-with-arquill&quot; class=&quot;bare&quot;&gt;http://stackoverflow.com/questions/14713129/how-to-add-test-classes-to-an-imported-ear-file-and-run-server-side-with-arquill&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http://www.programcreek.com/java-api-examples/index.php?api=org.jboss.arquillian.api.Deployment&quot; class=&quot;bare&quot;&gt;http://www.programcreek.com/java-api-examples/index.php?api=org.jboss.arquillian.api.Deployment&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
    </entry>
    <entry>
        <id>https://nozaki.me/roller/kyle/entry/arquillian-persistence-extension-examples</id>
        <title type="html">Arquillian Persistence Extension examples</title>
        <author><name>Kohei Nozaki</name></author>
        <link rel="alternate" type="text/html" href="https://nozaki.me/roller/kyle/entry/arquillian-persistence-extension-examples"/>
        <published>2015-03-18T08:47:33+00:00</published>
        <updated>2015-03-18T09:06:03+00:00</updated> 
        <category term="Arquillian" label="Arquillian" />
        <category term="arquillian" scheme="http://roller.apache.org/ns/tags/" />
        <category term="arquillian-persistence" scheme="http://roller.apache.org/ns/tags/" />
        <category term="dbunit" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jpa" scheme="http://roller.apache.org/ns/tags/" />
        <category term="wildfly" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/lbtc-xxx/arquillian-persistence&quot;&gt;The whole project can be obtained from GitHub&lt;/a&gt;. tested with WildFly 8.2.0.Final as remote container.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_implementation_test_target&quot;&gt;Implementation (test target)&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Assume we have very simple 2 entities as follows:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@Entity
public class Dept implements Serializable {
    @Id
    private Integer id;
    @Column(nullable = false)
    private String name;
    @OneToMany(mappedBy = &quot;dept&quot;)
    private Collection&amp;lt;Employee&amp;gt; employees;
...

@Entity
public class Employee implements Serializable {
    @Id
    private Integer id;
    @Column(nullable = false)
    private String name;
    @JoinColumn(nullable = false)
    @ManyToOne
    private Dept dept;
...&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Test target EJB:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@Stateless
@LocalBean
public class HumanResourcesBean {

    @PersistenceContext
    private EntityManager em;

    public void addEmployee(Employee employee, Integer deptId) {
        final Dept dept = em.find(Dept.class, deptId);
        dept.getEmployees().add(employee);
        employee.setDept(dept);
        em.persist(employee);
    }

    public void addDept(Dept dept, Employee employee) {
        Collection&amp;lt;Employee&amp;gt; employees = new ArrayList&amp;lt;&amp;gt;();
        dept.setEmployees(employees);
        employees.add(employee);
        employee.setDept(dept);
        em.persist(dept);
        em.persist(employee);
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_addemployee_testing&quot;&gt;addEmployee() testing&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Test method of addEmployee():&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@Test
@UsingDataSet(&quot;input.xml&quot;)
@ShouldMatchDataSet(value = &quot;addEmployee-expected.xml&quot;, orderBy = &quot;id&quot;)
public void addEmployeeTest() throws Exception {
    Employee emp = new Employee();
    emp.setId(2002);
    emp.setName(&quot;Todd&quot;);
    humanResourcesBean.addEmployee(emp, 200);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Initial entry data (input.xml):&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;&amp;lt;dataset&amp;gt;
    &amp;lt;Dept id=&quot;100&quot; name=&quot;Sales&quot;/&amp;gt;
    &amp;lt;Dept id=&quot;200&quot; name=&quot;Finance&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;1000&quot; name=&quot;Scott&quot;  dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;1001&quot; name=&quot;Martin&quot; dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;1002&quot; name=&quot;Nick&quot;   dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;2000&quot; name=&quot;Jordan&quot; dept_id=&quot;200&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;2001&quot; name=&quot;David&quot;  dept_id=&quot;200&quot;/&amp;gt;
&amp;lt;/dataset&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Expected data (addEmployee-expected.xml):&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;&amp;lt;dataset&amp;gt;
    &amp;lt;Employee id=&quot;1000&quot; name=&quot;Scott&quot;  dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;1001&quot; name=&quot;Martin&quot; dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;1002&quot; name=&quot;Nick&quot;   dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;2000&quot; name=&quot;Jordan&quot; dept_id=&quot;200&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;2001&quot; name=&quot;David&quot;  dept_id=&quot;200&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;2002&quot; name=&quot;Todd&quot;   dept_id=&quot;200&quot;/&amp;gt; &amp;lt;!-- Newly added --&amp;gt;
&amp;lt;/dataset&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_adddept_testing&quot;&gt;addDept() testing&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Test method of addDept():&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@Test
@UsingDataSet(&quot;input.xml&quot;)
@ShouldMatchDataSet(value = &quot;addDept-expected.xml&quot;, orderBy = &quot;id&quot;)
public void addDeptTest() throws Exception {
    Dept dept = new Dept();
    dept.setId(300);
    dept.setName(&quot;Engineering&quot;);
    Employee emp = new Employee();
    emp.setId(3000);
    emp.setName(&quot;Carl&quot;);
    humanResourcesBean.addDept(dept, emp);
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Initial entry data (input.xml) is the same to previous testing.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Expected data (addDept-expected.xml):&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;&amp;lt;dataset&amp;gt;
    &amp;lt;Dept id=&quot;100&quot; name=&quot;Sales&quot;/&amp;gt;
    &amp;lt;Dept id=&quot;200&quot; name=&quot;Finance&quot;/&amp;gt;
    &amp;lt;Dept id=&quot;300&quot; name=&quot;Engineering&quot;/&amp;gt; &amp;lt;!-- Newly added --&amp;gt;
    &amp;lt;Employee id=&quot;1000&quot; name=&quot;Scott&quot;  dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;1001&quot; name=&quot;Martin&quot; dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;1002&quot; name=&quot;Nick&quot;   dept_id=&quot;100&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;2000&quot; name=&quot;Jordan&quot; dept_id=&quot;200&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;2001&quot; name=&quot;David&quot;  dept_id=&quot;200&quot;/&amp;gt;
    &amp;lt;Employee id=&quot;3000&quot; name=&quot;Carl&quot;   dept_id=&quot;300&quot;/&amp;gt; &amp;lt;!-- Newly added --&amp;gt;
&amp;lt;/dataset&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;It works well with multiple tables.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_adddept_testing_with_dbunit&quot;&gt;addDept() testing with DBUnit&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;Sometimes use of DBUnit directly is useful for complex assertion. in such case you need to care following conditions:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you use JPA, force EntityManager to execute DMLs via invoking &lt;code&gt;em.flush()&lt;/code&gt; before assertion&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Include test data to the Arquillian&amp;#8217;s application archive so that DBUnit can load these data on the server side&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The XML can be included via &lt;code&gt;addAsResource()&lt;/code&gt; method as follows:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@Deployment
public static Archive&amp;lt;?&amp;gt; createDeploymentPackage() {
    final WebArchive webArchive = ShrinkWrap.create(WebArchive.class, &quot;test.war&quot;)
            .addPackage(Dept.class.getPackage())
            .addClass(HumanResourcesBean.class)
            .addAsResource(&quot;datasets/addDept-expected.xml&quot;) // to be loaded by DBUnit on the server side
            .addAsResource(&quot;test-persistence.xml&quot;, &quot;META-INF/persistence.xml&quot;);
//        System.out.println(webArchive.toString(true));
    return webArchive;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;paragraph&quot;&gt;
&lt;p&gt;The test method of addDept() and related convenient methods:&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;literalblock&quot;&gt;
&lt;div class=&quot;content&quot;&gt;
&lt;pre&gt;@Test
@UsingDataSet(&quot;input.xml&quot;)
public void addDeptTestWithDbUnit() throws Exception {
    Dept dept = new Dept();
    dept.setId(300);
    dept.setName(&quot;Engineering&quot;);
    Employee emp = new Employee();
    emp.setId(3000);
    emp.setName(&quot;Carl&quot;);

    humanResourcesBean.addDept(dept, emp);
    em.flush(); // force JPA to execute DMLs before assertion

    final IDataSet expectedDataSet = getDataSet(&quot;/datasets/addDept-expected.xml&quot;);
    assertTable(expectedDataSet.getTable(&quot;Dept&quot;), &quot;select * from dept order by id&quot;);
    assertTable(expectedDataSet.getTable(&quot;Employee&quot;), &quot;select * from employee order by id&quot;);
}

private static IDataSet getDataSet(String path) throws DataSetException {
    return new FlatXmlDataSetBuilder().build(HumanResourcesBeanIT.class.getResource(path));
}

private void assertTable(ITable expectedTable, String sql) throws SQLException, DatabaseUnitException {
    try (Connection cn = ds.getConnection()) {
        IDatabaseConnection icn = null;
        try {
            icn = new DatabaseConnection(cn);
            final ITable queryTable = icn.createQueryTable(expectedTable.getTableMetaData().getTableName(), sql);
            Assertion.assertEquals(expectedTable, queryTable);
        } finally {
            if (icn != null) {
                icn.close();
            }
        }
    }
}&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;sect1&quot;&gt;
&lt;h2 id=&quot;_references&quot;&gt;References&lt;/h2&gt;
&lt;div class=&quot;sectionbody&quot;&gt;
&lt;div class=&quot;ulist&quot;&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.jboss.org/author/display/ARQ/Persistence&quot; class=&quot;bare&quot;&gt;https://docs.jboss.org/author/display/ARQ/Persistence&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content>
    </entry>
</feed>

