Intellij Idea 創建EJB項目入門(一)


相關軟件:

1、JBoss(jboss-as-7.1.1.Final):http://jbossas.jboss.org/downloads

2、Intellij IDEA 13.02

3、JDK 1.7

4、Tomcat 6

 
1)首先下載JBossAS,解壓到C盤,如C:\jboss-as-7.1.1.Final。
3)安裝完成后,在Idea中對JBoss進行熱部署,可以參考:
 
====================================================================

1、新建一個項目,即作業空間:

項目名稱為j2ee_ejb,項目類型為簡單的Java,Next,Finish。
 
2、點擊項目名,右鍵 New -> Module -> 輸入模塊名為EBJTest -> 點擊“Next” -> 選擇“Web Application” 和“EJB:Enterprise Java Bean(3.2)” -> Finish:
勾“Create ejb-jar.xml”,選擇Download。
 
3、創建一個接口:HelloWorld
注意標注@Remote
package com.ejb;

import javax.ejb.Remote;

/**
 * Created by gao on 16-3-27.
 */
@Remote
public interface HelloWorld {
    public String sayHello(String world);
}

 

4、創建一個無狀態Bean,右擊src,New -> Stateless Session Bean。

 

輸入名稱為HelloWorld。

 

實現HelloWorld接口,完成編程:

package com.ejb;
import javax.ejb.Stateless;
/**
 * Created by gao on 16-3-27.
 */
@Stateless(name = "HelloWorldEJB")
public class HelloWorldBean implements HelloWorld {
    public HelloWorldBean() {
    }
    @Override
    public String sayHello(String world) {
        return "Hello " + world + "!";
    }
}

 

5、部署JBoss,選擇JBoss -> Local

 

彈出Run/Debug Configuration,輸入Name為ejbtest,然后選擇Deployment:

 
 
選擇右邊的“+”號,選擇“EJBTest:war exploded”,發現下面出現一行紅色字,為出錯:
 
點“Fix”,彈出Project Structure:
 
只需要將Output directory的目錄最后以.war結尾即可。
 
6、運行JBoss,成功部署,並生成war文件。
 
 
 此時JBoss被成功啟動,瀏覽器輸入: http://localhost:8080可以看到以下界面。
 
 
其實這時候JBoss服務器端的代碼就已經部署成功的了,如果你不想用IDEA部署的話,可以關閉IDEA 中的JBoss,將剛剛生成的war文件復制到JBoss安裝目錄中的statndalone\deployments,
即C:\jboss-as-7.1.1.Final\standalone\deployments,當啟動JBoss時,它會自動加載里面的項目文件。啟動JBoss,點擊C:\jboss-as-7.1.1.Final\bin下的standalone.dat文件。
 
7、編寫Java類進行測試——HelloWorldClient.java
 
注意:JBOSS 6,7調用通過JNDI查找EJB的方法和JBOSS5不一樣
所以可以先好好參考一些文章:
 
 
1)我本來是在一個新的Project中建立Java類測試的,但是后來發現在和EJB Module同一個Project下也是可以的,所以我就在剛剛新建的項目j2ee_ejb中新建一個Module。
點擊項目名j2ee_ejb,右鍵 -> New -> Module -> 選擇Java -> 輸入Module名稱“EJBTestJava” -> Next -> Finish。
 
 
2)在Module下新建一個文件夾lib,復制粘貼兩個jar包,一個是從剛剛生成的EJB文件中,將javax.ejb-api.jar復制進來,另外一個是從JBoss安裝路徑中,即從C:\jboss-as-7.1.1.Final\bin\client目錄中復制jboss-client.jar。
 
3)新建一個接口HelloWorld,即和EJB項目中的接口一樣,包括包名:
package com.ejb;
import javax.ejb.Remote;
/**
 * Created by gao on 16-3-28.
 */
@Remote
public interface HelloWorld {
    public String sayHello(String world);
}

 

4)新建一個測試類

import com.ejb.HelloWorld;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Hashtable;
public class HelloWorldClient {
    public static void main(String[] args) throws NamingException {
//        Properties props = new Properties();
//        props.setProperty("java.naming.factory.initial",
//                "org.jnp.interfaces.NamingContextFactory");
//        props.setProperty("java.naming.provider.url", "localhost:1099");
//        props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
//        try {
//            InitialContext ctx = new InitialContext(props);
//            HelloWorldRemote helloworld = (HelloWorldRemote) ctx
//                    .lookup("HelloWorld/remote");
//            System.out.println(helloworld.sayHello("World"));
//            System.out.println(helloworld.sayHello("China"));
//        } catch (NamingException e) {
//            e.printStackTrace();
//        }
        HelloWorld helloWorld = lookupRemoteStatelessEjbBean();
        System.out.println(helloWorld);
        String s = helloWorld.sayHello("world");
        System.out.println(s);
    }
    private static HelloWorld lookupRemoteStatelessEjbBean() throws NamingException {
        final Hashtable jndiProperties = new Hashtable();
        jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
        final Context context = new InitialContext(jndiProperties);
        final String appName = "";
        final String moduleName = "EJBTest_war_exploded";
        final String distinctName = "";
        final String beanName = "HelloWorldEJB";
        final String viewClassName = HelloWorld.class.getName();
        final String namespace = "ejb:" + appName + "/" + moduleName
                + "/" + distinctName + "/" + beanName + "!" + viewClassName;
        System.out.println(namespace);
        return (HelloWorld) context.lookup(namespace);
        /*
           return (RemoteCounter) context.lookup("ejb:" + appName + "/" + moduleName
            + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful");
        */
    }
 }

 

注意:注釋掉的是JBoss5之前的訪問模式,可以對比一下。
 
5)在src路徑下新建一個文件:jboss-ejb-client.properties,注意最后的username和password換上你在安裝JBoss時新建的用戶名和密碼。
endpoint.name=client-endpoint
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
remote.connection.default.username=yang
remote.connection.default.password=123456

 

6)項目目錄:

 

7)運行測試。注意,這時JBoss是已經啟動的了,你可以在IDEA啟動,也可以用JBoss的命令啟動。
直接點擊HelloWorldClient類名,右鍵,選擇Run "HelloWorldClient... "即可。
 
運行結束后可在控制台中看到以下輸出:
 
 
 
 
 
 
 
 
 
 
 
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM