EJB通过注解方式注入并使用其它EJB或者服务、配置JBoss数据源
https://blog.csdn.net/Jerome_s/article/details/37103171
通过注解方式注入并使用其他EJB或者服务
真实项目EJB对象非常多,EJB之间也能够互相调用,
在项目HelloWorld下新建接口Other 在cn.hqu.ejb3下:
public interface Other {
public abstract String sayMe();
}
新建实现类OtherBean在cn.hqu.ejb3下:
public class OtherBean implements Other {
@Override
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数据源
数据源能够降低数据库连接对象创建的数量。来提升系统的执行性能。
在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>