which package is it getting com.ibm.websphere.cache.DistributedMap from?
On 18/10/2018 18:09, Przemysław Furmańczyk wrote:
Good afternoon,
I have troubles with configuring OpenEJB with our application. My
project contains multiple modules. Let's say it looks like that:
* MyApp – enterprise application to be used as deployable unit,
* MyApp-B – EJB module with service facade implementations and
resource access components to integrate external resources,
* MyApp-BC – EJB client module containing all service facade
interfaces and the domain model,
* MyApp-UI – web application providing the user interface,
* MyApp-WS – web application exposing web services endpoints for
service facades,
* MyApp-D – module storing DAOs,
* MyApp-RWS – module storing REST web services.
I wanted to start with module B as a main place for configuration
(module MyApp-BC will be probably the main one). And what I did here is:
1. I put in *pom.xml* these extra dependencies:
<dependency>
<groupId>com.myapp</groupId>
<artifactId>MyApp-BC</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-junit</artifactId>
<version>4.7.5</version>
<exclusions>
<exclusion>
<artifactId>slf4j-jdk14</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-jee</artifactId>
<version>4.7.5</version>
</dependency>
2. Inside of root folder for this module, I've created /conf/ folder
with *openejb.xml*, where I defined as a Resource my DB connection.
3. Created a file *application-client.xml** in
/src/test/resources/META-INF/ with content:
<?xml version="1.0" encoding="UTF-8"?>
<application-client/>
4. And under /src/main/test/ directory created new test:
@ContextConfig(properties = {
@Property("java.naming.factory.initial=org.apache.openejb.core.LocalInitialContextFactory"),
@Property("openejb.deployments.classpath.exclude=.*\\.jar"),
// @Property("openejb.tempclassloader.skip=annotations"),
// @Property("openejb.altdd.prefix=test-"),
@Property("openejb.deployments.classpath.filter.descriptors=true") })
@RunTestAs("Authenticated")
@RunWith(OpenEjbRunner.class)
@LocalClient
public class MyTestClassImplIntegrationTest {
@EJB
private MyTestClassImpl myTestClassImpl;
@Test
public void testMethod() {
// some code for test method
}
}
5. The multiple /@Property/ annotations I took from our inside
guideline. The commented one, I get from trying to find solution
on internet. For @Property("openejb.altdd.prefix=test-")I've
created duplicated file of mine *ejb-jar.xml*. In both /ejb-jar/
files I have something like that:
<session>
<ejb-name>CacheManager</ejb-name>
<ejb-class>com.myapp.cache.CacheManager</ejb-class>
<resource-ref>
<res-ref-name>MyApp/Cache</res-ref-name>
<res-type>com.ibm.websphere.cache.DistributedMap</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</session>
The /CacheManager/ class is located in MyApp-BC module.
When I try to run the test in Eclipse I get the error from
*Console_output.txt* and *JUnit_logs.txt*
So I tried to remove
<ejb-class>com.myapp.cache.CacheManager</ejb-class>from both /ejb-jar/
files, but then I receive this error: *Console_output_2.txt*
Am I missing something or OpenEJB just doesn’t work with
DistributedMap from IBM?
I would really appreciate your help.
Best regards,
Przemek