2013-05-22 6 views
9

मैं एक दूरस्थ ईजेबी बनाने और तैनात करने के लिए मेवेन का उपयोग करना चाहता हूं। बाद में, मैं इस ईजेबी को एक अलग युद्ध परियोजना में इंजेक्ट करने और उपयोग करने में सक्षम होना चाहता हूं।मैवेन के साथ रिमोट ईजेबी कैसे बना और तैनात कर सकता हूं?

तो मैंने सोचा कि मुझे एक जार फ़ाइल की आवश्यकता होगी जो इंटरफेस को परिभाषित करता है, और दोनों परियोजनाओं (ईजेबी और युद्ध) में जार का उपयोग करता है।

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> 

इस तरह काम करता है:

उत्तर

3

मैं maven-ear-plugin के विन्यास बदल दिया है।

संबंधित मुद्दे