Intellij IDEA 新建一个EJB工程(三)
生活随笔
收集整理的這篇文章主要介紹了
Intellij IDEA 新建一个EJB工程(三)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
之前都是用IDEA啟動JBoss服務器,并在啟動的同時將EJB項目部署上去。在構建 artifacts 時遇到很多問題,明明是EJB項目卻不能用EJB導出,真是奇怪~~
后來用Web Application :Exploded可以正常導出了,但是在導出的名字后面竟然要加上.war,這是奇了怪了~~ 現在想在第一次用IDEA運行EJB項目的時候,并生成一個war文件,這個war文件就可以部署在任意的Jboss服務器上了,不用每次只能部署一個項目。不知道我的做法有沒有問題,但是實驗證明是可行的~特此記錄~~ 1、新建一個EJB Module,名字為EJBModuleTest01 生成EJB Module可以參考:http://www.cnblogs.com/yangyquin/p/5328344.html
1)接口HelloRemote:? package com.ejb; import javax.ejb.Remote; @Remote public interface HelloRemote {public String sayHello(String world); }?2)無狀態會話Bean,HelloBean:
package com.ejb; import javax.ejb.Stateless; @Stateless(name = "HelloEJB") public class HelloBean implements HelloRemote {public HelloBean() {System.out.println("EJBModuleTest01-HelloBean");}@Overridepublic String sayHello(String world) {return "EJBModuleTest01-sayHello():" + "world";} }3)EJBTestModule01的結構圖為:
4)配置lib文件路徑: Ctrl+Alt+Shift 彈出Project Structure -> 選擇Module -> 選擇EJBModuleTest01 -> 點擊右邊的加號 -> 選擇Jar or Directories -> 選擇新建的Module的lib文件夾 -> 確定后提勾再確定即可。 5)然后選擇Artifacts -> 選擇“EJBModuleTest01:war exploded” -> 發現出錯信息,點擊“Fix” -> 選擇“Add ......” 即可。?
6)同一頁面,修改Name,Type和Output directory為如下: Name中去掉exploded及其前面的一個空格,Type選擇為Web Application:Archive,? ??選擇Apply然后再點close即可。?
7)配置運行環境: 選擇菜單欄Run -> Edit Configurations? 點擊“+” -> 選擇JBoss Server -> Local -> 輸入名稱“ejbmoduletest01” -> 點擊“Deployment” -> 點擊右邊的“+” 號 -> 選擇EJBModuleTest01:war ,確定即可 8)運行 運行成功~~?
JBoss后臺管理界面:
?
2、以同樣的方式在同一個Project下新建一個Module,為EJBModuleTest02 1)Rmote接口: package com.ejb; import javax.ejb.Remote; @Remote public interface HiRemote {public String sayHi(String world); }?2)無狀態會話Bean,HiBean:
package com.ejb; import javax.ejb.Stateless; @Stateless(name = "HiEJB") public class HiBean implements HiRemote {public HiBean() {System.out.println("EJBModuleTest02-HiBean");}@Overridepublic String sayHi(String world) {return "EJBModuleTest02-sayHi()" + world;} }3)EJBModuleTest02結構圖:
4)Ctrl+Alt+Shift 彈出項目結構配置對話框,對于本Module的lib,你可以選擇將剛剛的Module的lib文件夾導入,也可以在Project中將剛剛的lib文件夾導入。 選擇 Artifacts,選擇“EJBModuleTest02:war exploded”,跟剛剛的修改一樣,將Name中的exploded及其前面的一個空格去掉,Type選擇“Web Application:Archive’,選擇Apply然后再點close即可。?
5)配置運行環境,如下圖所示: 選擇剛剛新建的EJBModuleTest02:war 6)運行: 注意這時是重新啟動JBoss。 運行成功~~ JBoss后臺管理界面: 3、分別建立的兩個Module都能正常運行,也成功的生成了兩個war文件。?
?
1)關掉IDEA啟動的JBoss,在JBoss安裝目錄下啟動,找到文件:C:\jboss-as-7.1.1.Final\bin\standalone.bat,雙擊啟動JBoss。 啟動成功: 2)將生成的兩個war文件復制到JBoss安裝目錄的這個文件夾:C:\jboss-as-7.1.1.Final\standalone\deployments。 JBoss會自動檢測war文件,并生成對應的后綴為deployed的文件 3)部署成功~?4)查看JBoss后臺管理界面:
4、在本地新建測試類就可以調用這兩個Module的方法了。 測試類可以參考:http://www.cnblogs.com/yangyquin/p/5328344.html 1)測試Module結構:2)配置文件jboss-ejb-client.properties:
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=1234563)HelloRemote接口:
package com.ejb; import javax.ejb.Remote; @Remote public interface HelloRemote {public String sayHello(String world); }4)Hi接口:
package com.ejb; import javax.ejb.Remote; @Remote public interface HiRemote {public String sayHi(String world); }5)測試類:
import com.ejb.HelloRemote; import com.ejb.HiRemote; import org.junit.Before; import org.junit.Test; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.Hashtable; /*** Created by gao on 16-3-31.*/ public class HelloAndHiClient {final String appName = "";final String moduleName01 = "EJBModuleTest01_war";final String moduleName02 = "EJBModuleTest02_war";final String distinctName = "";final String beanName01 = "HelloEJB";final String beanName02 = "HiEJB";String viewClassName = null;String namespace = null;Hashtable jndiProperties = null;Context context = null;@Beforepublic void before() throws NamingException {jndiProperties = new Hashtable();jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");context = new InitialContext(jndiProperties);}@Testpublic void testHelloRemote() throws NamingException {viewClassName = HelloRemote.class.getName();namespace = "ejb:" + appName + "/" + moduleName01+ "/" + distinctName + "/" + beanName01 + "!" + viewClassName;System.out.println("namespace01:" + namespace);HelloRemote hello = (HelloRemote) context.lookup(namespace);System.out.println("HelloRemote:" + hello);System.out.println(hello.sayHello("EJBModuleTest01_war"));}@Testpublic void testHiRemote() throws NamingException {viewClassName = HiRemote.class.getName();namespace = "ejb:" + appName + "/" + moduleName02+ "/" + distinctName + "/" + beanName02 + "!" + viewClassName;System.out.println("namespace02:" + namespace);HiRemote hi = (HiRemote) context.lookup(namespace);System.out.println("HiRemote:" + hi);System.out.println(hi.sayHi("EJBModuleTest02_war"));} }6)運行第二個測試函數的輸出結果:
?
?搞掂~~~~
?
?
轉載于:https://www.cnblogs.com/yangyquin/p/5341729.html
總結
以上是生活随笔為你收集整理的Intellij IDEA 新建一个EJB工程(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 00后男子擅入古墓葬直播并取出尸骨摆拍
- 下一篇: 忠于色彩 华为影像XMAGE 2023年