淺談如何將EJB部署在Jboss下
我覺得做一個客戶端調(diào)用一個實(shí)體bean算是一個完整列子吧,實(shí)體bean這里不就不詳細(xì)說了。客戶端調(diào)用需要使用會話bean這個也寫好吧。然后打包這個EJB,這里EJB部署到j(luò)boss下就可以使用了
另外我使用oracle數(shù)據(jù)庫,所以在jboss下的deploy下得增加oracle數(shù)據(jù)源配置文件,如下: 
- oracledb-ds.xml
 - <datasources>
 - <local-tx-datasource>
 - <jndi-name>oracleDS</jndi-name>
 - <connection-url>
 - jdbc:oracle:thin:@localhost:1521:cmmboss
 - </connection-url>
 - <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
 - <user-name>system</user-name>
 - <password>cmmboss</password>
 - <metadata>
 - <type-mapping>oracle10g</type-mapping>
 - </metadata>
 - </local-tx-datasource>
 - </datasources>
 
注意這個jndi名字和你調(diào)用的時候一致,這個實(shí)在EJB這個里面的persistence.xml里面一致部署的話。EJB打包的jar可以單獨(dú)部署于deploy下面。
也可以打包成ear里面 
ear的結(jié)構(gòu):mytestEJBweb.ear 
- META-INF
 - --application.xml
 - testEJBweb.war
 - testEJB.jar
 
客戶端調(diào)用,可以是普通類,也可以是servlet 。我這里以一個servlet距離 
在servlet初始化的時候處理 
- public void init() throws ServletException {
 - Hashtable properties = new Hashtable();
 - properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
 - properties.put(Context.PROVIDER_URL, "jnp://localhost:1100");
 
這里特別注意的是使用jnp方式訪問,其他容器都有自己的訪問方式,比如weblogic使用T3,ip如果是夸ip訪問注意ip綁定,還有端口號是jnp的端口1100,而不是http端口8080等
- properties.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
 - try {
 - InitialContext ctx = new InitialContext(properties);
 - ComputerBeanRemote computerBean = (ComputerBeanRemote)ctx.lookup("mytestEJBweb/ComputerBean/remote");
 
這里首先調(diào)用的是ear這個資源的jndi路徑(我第一次使用了war的資源路徑,唉對jndi沒有理解,調(diào)試了一個晚上,希望大家不要犯我這樣的錯誤),然后再是EJB bean的路徑, 
- this.computerBean = computerBean;
 - } catch (NamingException e) {
 - e.printStackTrace();
 - }
 - }
 
【編輯推薦】















 
 
 


 
 
 
 