javascript
EJB3与Spring的集成
http://www.iteye.com/topic/851288
ejb3集成spring,部署于tomcat(OpenEjb) ,jdk1.6
1 Tomcat本不支持部署EJB,通過向其安裝OpenEjb,可使其支持。
?? 下載http://www.apache.org/dyn/closer.cgi/openejb/3.1.3/openejb.war
?? 將下載的openejb.war 放在Tomcat的安裝目錄 webapps下。
?? 啟動Tomcat。
?? 在IE中輸入:http://localhost:8080/openejb 即可看到openejb信息
? 2? ejb3與spring的集成
? EJB bean Hello 定義:
@Local
public interface HelloLocal
{
??? public void hello();
}
@Stateless
public class HelloBean implements Hello,HelloLocal
{
??? public void hello()
??? {
??????? System.out.println("Hello,world!");
???????
??? }??
}
EJB bean Calculator 定義
(在CalculatorImpl中調用調用EJB bean Hello、Spring bean Chat)
? @Remote
public interface CalculatorRemote {
???
??? public int sum(int add1, int add2);
???
??? public int multiply(int mul1, int mul2);
}
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class CalculatorImpl implements CalculatorRemote, CalculatorLocal {
??? @EJB private HelloLocal helloBean;
??? @Autowired private Chat chat;
??? public void setChat(@Qualifier("chat") Chat chat){
??????? this.chat=chat;
??? }
??? public int sum(int add1, int add2) {
??????? helloBean.hello();
??????? chat.chat();
??????? return add1+add2;
??? }
??? public int multiply(int mul1, int mul2) {
??????? return mul1*mul2;
??? }
}
? Chat bean定義----spring:
public interface Chat
{
??? public void chat();
}
@Service
public class ChatImpl implements Chat
{
??? public ChatImpl(){
??????? System.out.println("==================initial =====ChatImpl=========");
??? }
??? @Override
??? public void chat()
??? {
??????? // TODO Auto-generated method stub
??????? System.out.println("==================chat==============");
??????? System.out.println("==================Nice to meet you!");
??? }
}
ejb bean 通過SpringBeanAutowiringInterceptor.class載入spring 配置,從而調用spring bean。
SpringBeanAutowiringInterceptor默認配置文件為beanRefContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
?????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????? xmlns:context="http://www.springframework.org/schema/context"
?????? xmlns:tx="http://www.springframework.org/schema/tx"
??????
?????? xsi:schemaLocation="http://www.springframework.org/schema/beans
?????????? http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
?????????? http://www.springframework.org/schema/context
?????????? http://www.springframework.org/schema/context/spring-context-2.5.xsd
?????????? http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
? <!-- START SNIPPET: annotations -->
? <bean id="factoryKey"
class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg value="spring-context.xml"/>
</bean>
</beans>
spring 配置文件為spring-context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
?????? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?????? xmlns:context="http://www.springframework.org/schema/context"
?????? xmlns:tx="http://www.springframework.org/schema/tx"
??????
?????? xsi:schemaLocation="http://www.springframework.org/schema/beans
?????????? http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
?????????? http://www.springframework.org/schema/context
?????????? http://www.springframework.org/schema/context/spring-context-2.5.xsd
?????????? http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
? <!-- START SNIPPET: annotations -->
? <context:annotation-config/>
? <bean id="chat" class="com.ejb.test.ChatImpl"/>
</beans>
3 部署
? 將此EJB工程打成jar包,比如放在D:\Tomcat\ejb下(注:“D:\Tomcat\ejb”是我自己建的)
? 然后打開:Tomcat\conf\openejb.xml,將</openejb>前的內容改為:
??
?? <!--
#
#? The <Deployments> element can be used to configure file
#? paths where OpenEJB should look for ejb jars or ear files.
#
#? See http://openejb.apache.org/deployments.html
#
#? The below entry is simply a default and can be changed or deleted
<Deployments dir="apps/" />原來是這句,我們用不到,可以用下面的語句直接加載指定的ejb jar包。
-->
<Deployments jar="D:/Tomcat/ejb/OpenEjbTest.jar" />
重啟Tomcat,在瀏覽器輸入:http://127.0.0.1:8089/openejb/invokeobj.jsp ,即可看到自己的EJB Bean.
4 客戶端調用
public class TestCalculator
{
??? public static void main(String[] args) throws NamingException {
??????? try
??????? {
??????????? Properties p = new Properties();
??????????? //p.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
??????????? p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
??????????? p.put("java.naming.provider.url", "http://localhost/openejb/ejb");
??????????? InitialContext initialContext = new InitialContext(p);
??????????? CalculatorRemote remote =(CalculatorRemote) initialContext.lookup("CalculatorImplRemote");//CalculatorImplRemote
???????????? System.out.println(remote.sum(1, 1));
??????? }
??????? catch (javax.naming.NamingException e)
??????? {
??????????? // TODO Auto-generated catch block
??????????? e.printStackTrace();
??????? }
??? }???
}
總結
以上是生活随笔為你收集整理的EJB3与Spring的集成的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring和ejb2.x集成共享app
- 下一篇: Spring中调用远程EJB的配置