ejbशुरुआत ejb से हो रही है


टिप्पणियों

यह खंड ईजेबी क्या है का एक सिंहावलोकन प्रदान करता है, और क्यों एक डेवलपर इसका उपयोग करना चाह सकता है।

यह ejb के भीतर किसी भी बड़े विषयों का भी उल्लेख करना चाहिए, और संबंधित विषयों के लिए लिंक करना चाहिए। चूंकि ejb के लिए प्रलेखन नया है, इसलिए आपको उन संबंधित विषयों के प्रारंभिक संस्करण बनाने की आवश्यकता हो सकती है।

7.1 के रूप में JBoss के साथ EJB की स्थापना

1 अवलोकन

इस लेख में हम एंटरप्राइज JavaBeans (EJB) के साथ शुरुआत करने के बारे में चर्चा करने जा रहे हैं। हम JBoss का उपयोग 7.1.1.Final के रूप में करेंगे, लेकिन आप अपनी पसंद के किसी भी सर्वर का उपयोग करने के लिए स्वतंत्र हैं।

2. बीन के लिए मावेन निर्भरता

EJB का उपयोग करने के लिए सुनिश्चित करें कि आप इसका नवीनतम संस्करण अपनी pom.xml फ़ाइल की निर्भरता अनुभाग में जोड़ते हैं:

<dependency>
    <groupId>org.jboss.spec.javax.ejb</groupId>
    <artifactId>jboss-ejb-api_3.2_spec</artifactId>
    <version>1.0.0.Final</version>
</dependency>
 

सुनिश्चित करें कि आप JBoss निर्भरता को ठीक से जोड़ते हैं क्योंकि हम इस ट्यूटोरियल में हमारे एप्लिकेशन सर्वर के रूप में JBoss का उपयोग करेंगे। ट्यूटोरियल के बाद के भाग में हम प्रोजेक्ट के लिए मावेन बिल्ड को सेटअप करने के तरीके पर विस्तार से चर्चा करेंगे।

3. ईजेबी रिमोट

चलिए सबसे पहले बीन इंटरफेस बनाते हैं जिसे HelloWorldRemote कहा जाता है।

public interface HelloWorldRemote {
    public String getHelloWorld();
}
 

अब हम उपरोक्त इंटरफ़ेस को लागू करेंगे और इसे HelloWorldBean नाम देंगे।

@Stateless
public class HelloWorldBean implements HelloWorldRemote {

    public HelloWorldBean() {
    
    }
    
    @Override
    public String getHelloWorld(){
        return ("Hello World");
    }
}
 

वर्ग घोषणा के शीर्ष पर @Stateless नोट @Stateless नोटेशन नोट करें। यह एक स्टेटलेस सेशन बीन को दर्शाता है।

4. रिमोट बीन के लिए मावेन सेटअप

इस अनुभाग में हम चर्चा करेंगे कि सर्वर पर एप्लिकेशन को बनाने और चलाने के लिए मावेन को कैसे सेटअप किया जाए।

चलो एक-एक करके प्लगइन्स देखें।

4.1। कंपाइलर प्लगिन

मावेन-कंपाइलर-प्लगइन का उपयोग हमारी परियोजना के स्रोतों को संकलित करने के लिए किया जाता है।

यहां हमने स्रोत के साथ प्लगइन के संस्करण 2.3.1 का उपयोग किया है और कॉन्फ़िगरेशन के तहत JDK को 1.7 पर लक्षित किया है।

हमने इन सेटिंग्स को टैग के अंदर गुणों के रूप में और $ {संपत्ति} के माध्यम से संदर्भित किया है।

<version.compiler.plugin>2.3.1</version.compiler.plugin>
<!-- maven-compiler-plugin -->
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.source>1.7</maven.compiler.source>
 

4.2 ईजेबी प्लगइन

यह प्लगइन बीन फ़ाइल के साथ-साथ संबंधित क्लाइंट जार उत्पन्न करता है।

हमने ejb संस्करण को 3.2 के रूप में निर्दिष्ट किया है और जेनरेटक्लाइंट संपत्ति को सही पर सेट किया गया है जो क्लाइंट उत्पन्न करता है।

4.3 JBoss में तैनाती

Jboss-as-maven-plugin का उपयोग JBoss AS 7 में एप्लिकेशन को परिनियोजित करने, फिर से खोलने, चलाने या चलाने के लिए किया जाता है।

इस कॉन्फ़िगरेशन में हम बिल्ड फ़ाइल का नाम प्रोजेक्ट बिल्ड फ़ाइलनाम के रूप में निर्दिष्ट करते हैं, जो हमारे मामले ejb-remote-1.0-SNAPSHOT में फॉर्म आर्टिफ़ाइड-संस्करण के डिफ़ॉल्ट रूप से होता है।

4.4 ईजेबी के लिए आवश्यक मावेन निर्भरता

jboss-javaee-6.0 JBoss के Java EE 6 API के संस्करण को परिभाषित करता है जिसका हम उपयोग करना चाहते हैं।

JBoss जावा ईई 6 एपीआई का पूरा सेट वितरित करता है जिसमें बिल ऑफ मटेरियल (बीओएम) भी शामिल है।

एक बीओएम कलाकृतियों के ढेर (या संग्रह) के संस्करणों को निर्दिष्ट करता है। हम इसे टैग में निर्दिष्ट करते हैं ताकि हमें हमेशा कलाकृतियों के सही संस्करण मिलें। इस निर्भरता के प्रकार में स्वयं एक पोम होता है जिसमें आवश्यक निर्भरताएं होती हैं।

<dependency>
    <groupId>org.jboss.spec</groupId>
    <artifactId>jboss-javaee-6.0</artifactId>
    <version>${version.org.jboss.spec.jboss.javaee.6.0}</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
 

4.5 एनोटेशन

निम्नलिखित को एनोटेशन निर्भरता मिलेगी:

<dependency>
    <groupId>org.jboss.spec.javax.annotation</groupId>
    <artifactId>jboss-annotations-api_1.1_spec</artifactId>
    <scope>provided</scope>
</dependency>
 

4.6 ईजेबी संस्करण 3.2

निम्नलिखित कोड के कोड में हम विनिर्देशों के नवीनतम संस्करण प्राप्त करते हैं:

<dependency>
    <groupId>org.jboss.spec.javax.ejb</groupId>
    <artifactId>jboss-ejb-api_3.2_spec</artifactId>
    <version>1.0.0.Final</version>
</dependency>
 

उपरोक्त परियोजना को JBoss सर्वर में चलाने के लिए हमें पहले रन करना होगा:

mvn clean install
 

फिर हमें निम्नलिखित मावेन कमांड को चलाकर इसे JBoss सर्वर पर चलाने की आवश्यकता है:

jboss-as:deploy
 

अब आपको जार फाइल को jboss सर्वर में तैनात किया जाना चाहिए।

वैकल्पिक रूप से आप उपलब्ध जार को प्रोजेक्ट में लक्ष्य फ़ोल्डर से कॉपी कर सकते हैं और इसे सर्वर के वेबैप फ़ोल्डर में पेस्ट कर सकते हैं।

5. ग्राहक परियोजना की स्थापना

रिमोट बीन बनाने के बाद हमें एक क्लाइंट बनाकर तैनात बीन का परीक्षण करना चाहिए।

पहले परियोजना के लिए मावेन सेटअप पर चर्चा करते हैं।

5.1 मावेन प्लगइन्स का इस्तेमाल किया

मावेन-कंपाइलर-प्लगइन का उपयोग आपके प्रोजेक्ट के स्रोतों को संकलित करने के लिए किया जाता है।

हमने स्रोत और लक्ष्य वर्गों के लिए jdk 1.7 संस्करण निर्दिष्ट किया है।

हमारा क्लाइंट एक जावा प्रोग्राम है, इसे चलाने के लिए हम exec-maven-plugin उपयोग करते हैं जो सिस्टम और जावा प्रोग्राम को निष्पादित करने में मदद करता है। हमें निष्पादन योग्य (अर्थात जावा), वर्गपथ और जावा वर्ग (com.baeldung.ejb.client.Client) निर्दिष्ट करने की आवश्यकता है।

क्लासपाथ खाली छोड़ दिया जाता है क्योंकि प्लगइन में प्रदान की गई निर्भरता के आधार पर आवश्यक क्लासपैथ तर्क शामिल हैं।

5.2 EJB3 ग्राहक के लिए मावेन निर्भरता

EJB3 क्लाइंट को चलाने के लिए हमें निम्नलिखित निर्भरताओं को शामिल करना होगा।

हम क्लाइंट को चलाने के लिए इस एप्लिकेशन के दूरस्थ व्यापार इंटरफेस पर निर्भर करते हैं। इसलिए हमें ejb क्लाइंट जार निर्भरता को निर्दिष्ट करने की आवश्यकता है। EJB क्लाइंट जार पर इस परियोजना की निर्भरता को निर्दिष्ट करने के लिए "ejb- क्लाइंट" मान के साथ टैग का उपयोग किया जाता है।

<dependency>
    <groupId>com.theopentutorials.ejb3</groupId>
    <artifactId>ejbmavendemo</artifactId>
    <type>ejb-client</type>
    <version>${project.version}</version>
</dependency>
 

निर्भरता jboss-transaction-api_1.1_spec , jboss-ejb-api_3.1_spec , jboss-ejb-client , xnio-api , xnio-nio , jboss-remoting , jboss-sasl , jboss-marshalling-river jboss-sasl ये संकलन समय के दौरान आवश्यक हैं, न कि संकलित समय के दौरान।

निर्भरता प्रबंधन के तहत निर्भरता jboss-javaee-6.0 और jboss-as -ejb- क्लाइंट-बम में आयात के रूप में गुंजाइश है। इसका उपयोग दूरस्थ POM से वर्तमान प्रोजेक्ट में निर्भरता प्रबंधन जानकारी शामिल करने के लिए किया जाता है। ये रिमोट POMs JBoss द्वारा प्रदान किए जाते हैं जिसमें क्लाइंट को चलाने के लिए आवश्यक निर्भरताएं होती हैं।

5.3 JBoss EJB ग्राहक गुण

"Src / main / Resources" के तहत एक फाइल बनाएं और इसे jboss-ejb-client.properties नाम दें।

remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
 

6. ग्राहक वर्ग बनाना

सबसे पहले हम एक क्‍लायटाइटलिटी क्‍लास बनाते हैं:

public class ClientUtility {
    private static Context initialContext;
    private static final String PKG_INTERFACES = "org.jboss.ejb.client.naming";

    public static Context getInitialContext() throws NamingException {
        if (initialContext == null) {
            Properties properties = new Properties();
            properties.put(Context.URL_PKG_PREFIXES, PKG_INTERFACES);
            initialContext = new InitialContext(properties);
         }
        return initialContext;
    }
}
 

अब हम वास्तविक ग्राहक वर्ग बनाते हैं जो सर्वर में तैनात बीन का उपभोग करेगा:

public class Client {
    
    //The lookup method to get the EJB name
    private static HelloWorldRemote doLookup() {
        Context context = null;
        HelloWorldRemote bean = null;
        try {
            // 1. Obtaining Context
            context = ClientUtility.getInitialContext();
            // 2. Generate JNDI Lookup name
            String lookupName = getLookupName();
            // 3. Lookup and cast
            bean = (HelloWorldRemote) context.lookup(lookupName);
 
        } catch (NamingException e) {
            e.printStackTrace();
        }
        return bean;
    }
 
    private static String getLookupName() {
        
         // The app name is the EAR name of the deployed EJB without .ear suffix.
         // Since we haven't deployed the application as a .ear, the app name for
         // us will be an empty string
         
        String appName = "";
 
        
         // The module name is the JAR name of the deployed EJB without the .jar
         // suffix.
        String moduleName = "ejb-remote-0.0.1-SNAPSHOT";
 
        
        // AS7 allows each deployment to have an (optional) distinct name. This
        // can be an empty string if distinct name is not specified.
        String distinctName = "";
 
        // The EJB bean implementation class name
        String beanName = "HelloWorldBean";
 
        // Fully qualified remote interface name
        final String interfaceName = "com.baeldung.ejb.tutorial.HelloWorldRemote";
 
        // Create a look up string name
        String name = "ejb:" + appName + "/" + moduleName + "/" + distinctName
                + "/" + beanName + "!" + interfaceName;
        
        return name;
    }
}
 

क्लाइंट वर्ग सेम का उपभोग करता है और परिणाम को आउटपुट करता है।

सात निष्कर्ष

इसलिए हमने एक EJB सर्वर और एक ग्राहक बनाया है जो सेवा का उपभोग करता है। प्रोजेक्ट को किसी भी एप्लिकेशन सर्वर पर चलाया जा सकता है।