https://blog.csdn.net/Jerome_s/article/details/37103171 css
真實項目EJB對象很是多,EJB之間也可以互相調用,html
在項目HelloWorld下新建接口Other 在cn.hqu.ejb3下:mysql
public interface Other {sql
public abstract String sayMe();數據庫
}app
新建實現類OtherBean在cn.hqu.ejb3下:less
public class OtherBean implements Other {ide
@Overridepost
public String sayMe() {性能
return "Other";
}
}
將Javabean變成無狀態會話bean,接口默認是本地接口:
@Stateless
public class OtherBean implements Other {
@Override
public String sayMe() {
return "Other";
}
}
在HelloWorldBean調用OtherBean裏面的方法。
獲取OtherBean裏面的方法:
獲得一個EJB對象採用兩種方法:採用JNDI查找。採用依賴注入。
經過JDNI查找:
把EJB部署到Jboss:執行Ant。deploy。
改動client代碼:EJBCLient
public classEJBClient {
public static void main(String[] args) {
try {
InitialContextctx = newInitialContext();
HelloWorldhelloworld = (HelloWorld) ctx
.lookup("HelloWorldBean/remote");
System.out.println(helloworld.sayHello("注入的蘇志達"));
}catch(NamingException e) {
e.printStackTrace();
}
}
}
執行main輸出:注入的蘇志達說:你好!
Other,
調用成功。
代碼:http://pan.baidu.com/s/1mgjxXt2
執行ant部署。執行clientmain,調用成功。
在項目中假設要使用別的EJB可以使用注入的方式。
@EJB Other other。
但是假設EJB找到這個接口被兩個類實現了,會報錯,因爲它不知道咱們要注入哪個。
解決的方法:比方要注入的是OtherBean 那麼可以使用
@EJB(beanName="OtherBean")Other other;明白指定要注入的的EJB,就不會出現上訴的問題。
@EJB僅僅能注入EJB,其餘的比方定時服務 用 @Resource TimerService timerService;
注入數據源也是使用@Resource
@Resource(mappedName="") DataSource dataSource;
mappedName用來指定數據源的JNDI名稱。
數據源可以下降數據庫鏈接對象建立的數量。來提高系統的執行性能。
在Jboss建立數據源:
數據庫的配置模版在F:\Java\jboss-4.2.2.GA\docs\examples\jca下找到相應數據庫模版複製到桌面改動。
配置數據源
<datasources>
<local-tx-datasource>
<jndi-name>hquDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/hqutest</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>jerome</password>
將Mysql的驅動文件複製到server\default\lib,從新啓動Jboss。
配置好,進行公佈,將數據源公佈到Jboss,將數據源文件複製到server\default\deploy控制檯提示公佈成功。可以在信息裏看到JNDI name。
進入Jboss控制檯http://localhost:8080/jmx-console可以看到咱們剛剛公佈的數據源:在jboss.jca下。
在jboss.jca下name=hquDS,service=ManagedConnectionPool點擊進去控制檯配置最小最大鏈接數等等信息從新啓動Jboss配置就不見了,
可以經過mysql-ds.xml配置如配置最小最大鏈接數在<password>jerome</password>如下增長
<password>jerome</password>
<min-pool-size>3</min-pool-size>
<max-pool-size>100</max-pool-size>