मैं एक दूरस्थ ईजेबी बनाने और तैनात करने के लिए मेवेन का उपयोग करना चाहता हूं। बाद में, मैं इस ईजेबी को एक अलग युद्ध परियोजना में इंजेक्ट करने और उपयोग करने में सक्षम होना चाहता हूं।मैवेन के साथ रिमोट ईजेबी कैसे बना और तैनात कर सकता हूं?
तो मैंने सोचा कि मुझे एक जार फ़ाइल की आवश्यकता होगी जो इंटरफेस को परिभाषित करता है, और दोनों परियोजनाओं (ईजेबी और युद्ध) में जार का उपयोग करता है।
package example;
import javax.ejb.Stateless;
@Stateless
public class Ejb implements Bean {
@Override
public void process() {
}
}
:
package example;
import javax.ejb.Remote;
@Remote
public interface Bean {
void process();
}
मैं एक Maven परियोजना example:ejb
कहा जाता है में ऊपर इंटरफेस, EJB के रूप में पैक लागू:
मैं एक Maven परियोजना example:api
कहा जाता है, जार के रूप में पैक में इस इंटरफेस है, Ejb प्रोजेक्ट maven-ejb-plugin
का उपयोग करता है:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<ejbVersion>3.1</ejbVersion>
</configuration>
</plugin>
और दोनों परियोजनाओं javaee-api
पर निर्भर करते हैं:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
अब उन्हें एक साथ रखा है, मैं एक तिहाई Maven परियोजना बनाया, example:ear
कहा जाता है, ear
के रूप में पैक:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>example</groupId>
<artifactId>ear</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>ear</packaging>
<name>ear</name>
<dependencies>
<dependency>
<groupId>example</groupId>
<artifactId>api</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>example</groupId>
<artifactId>ejb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<configuration>
<modules>
<ejbModule>
<groupId>example</groupId>
<artifactId>ejb</artifactId>
</ejbModule>
<jarModule>
<groupId>example</groupId>
<artifactId>api</artifactId>
</jarModule>
</modules>
</configuration>
</plugin>
</plugins>
</build>
</project>
समस्या यह है कि मैं यह कर सकते है ' इस कान परियोजना तैनात नहीं है। ,
09:39:39,702 INFO [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 2) JBAS015003: Found ear.ear in deployment directory. To trigger deployment create a file called ear.ear.dodeploy
09:39:39,713 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015876: Starting deployment of "ear.ear"
09:39:39,773 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "ejb-0.0.1-SNAPSHOT.jar"
09:39:39,793 WARN [org.jboss.modules] (MSC service thread 1-8) Failed to define class example.Ejb in Module "deployment.ear.ear.ejb-0.0.1-SNAPSHOT.jar:main" from Service Module Loader: java.lang.LinkageError: Failed to link example/Ejb (Module "deployment.ear.ear.ejb-0.0.1-SNAPSHOT.jar:main" from Service Module Loader)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:396)
[...]
Caused by: java.lang.NoClassDefFoundError: example/Bean
at java.lang.ClassLoader.defineClass1(Native Method) [rt.jar:1.7.0_03]
[...]
Caused by: java.lang.ClassNotFoundException: example.Bean from [Module "deployment.ear.ear.ejb-0.0.1-SNAPSHOT.jar:main" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
मैं JBoss उपयोग कर रहा हूँ 7.1.1 के रूप में करता है, तो यह किसी भी फर्क नहीं पड़ता: मैं निम्नलिखित त्रुटि मिलती है।
क्या आप जानते हैं कि मैं क्या गलत कर रहा हूं?
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.6</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
</configuration>
</plugin>
इस तरह काम करता है: