복붙노트

[SPRING] 봄 콩에 EJB 3 주입

SPRING

봄 콩에 EJB 3 주입

봄, 봄 보안으로 mavenized 웹 응용 프로그램을 만들었습니다 ... 이제 데이터베이스 액세스를위한 ejb 모듈을 추가하고 싶습니다. 인터넷에서 찾고 있었지만 EJB를 처음 사용했기 때문에 명확한 내용을 찾지 못했습니다. 컨트롤러에서 @EJB와 같은 것을 사용하고 싶습니다. 처럼"

@Stateless(name = "CustomerServiceImpl")
public class CustomerServiceImpl implements CustomerService 


@EJB
private MyEjb myEjb;

튜토리얼이나 다른 도움말이 있으면 스프링 컨텍스트에서 어떻게 구성 할 수 있습니까? 위대하고 감사 할 것입니다.

해결법

  1. ==============================

    1.Spring bean에 ejb 3 bean을 주입하려면 아래 단계를 따르십시오. 1. Spring 빈을 만든다. 2. 원격 및 로컬 인터페이스를 사용하여 EJB를 만듭니다. 3. 구현 클래스 작성 예 :

    Spring bean에 ejb 3 bean을 주입하려면 아래 단계를 따르십시오. 1. Spring 빈을 만든다. 2. 원격 및 로컬 인터페이스를 사용하여 EJB를 만듭니다. 3. 구현 클래스 작성 예 :

    package com.ejb;
    @Local
    public interface MyEjbLocal{
           public String sendMessage();
    }
    
    package com.ejb;
    @Remote
    public interface MyEjbRemote{
           public String sendMessage();
    }
    
    @Stateless(mappedName = "ejb/MessageSender")
    public class MyEjbImpl implements MyEjbLocal, MyEjbRemote{
     public String sendMessage(){
       return "Hello";   
     }
    }
    

    위의 예는 원격 인터페이스와 로컬 인터페이스를 모두 사용하는 EJB3입니다.

    이제 우리는이 ejb를 삽입하는 Spring 빈을 생성한다.

    package com.ejb;
    
    @Service
    public class MyService {
    
       private MyEjbLocal ejb;
    
       public void setMyEjbLocal(MyEjbLocal ejb){
            this.ejb = ejb;
      }
    
      public MyEjbLocal getMyEjbLocal(){
           return ejb;
      }
    }
    

    우리는 봄에 ejb의 인스턴스를 추가했다. 그러나 스프링의 spring-config.xml에 이것을 삽입해야한다. 봄 콩에 ejb를 주입하는 데는 두 가지 방법이 있습니다.

    <bean id ="myBean" class="org.springframework.ejb.access.LocalStetelessSessionProxyFactoryBean">
           <property name="jndiName" value="ejb/MessageSender#com.ejb.MyEjb=Local />
           <property name="businessInterface" value="com.ejb.MyEjbLocal" />
    </bean>
    

    참고 : 여기서 로컬 인터페이스를 사용 했으므로 필요에 따라 원격을 사용할 수 있습니다.

    <jee:remote-slsb id="messageSender"
    jndi-name="ejb/MessageSender#com.ejb.MyEjbLocal"
               business-interface="com.ejb.MyEjbLocal"
               home-interface="com.ejb.MyEjbLocal"
               cache-home="false" lookup-home-on-startup="false"
               refresh-home-on-connect-failure="true" />
    

    그래서 빈이 초기화 될 때 ejb는 당신의 스프링 빈에 주입 될 것입니다.

  2. ==============================

    2.여기를보십시오 : http://docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#ejb-access-local

    여기를보십시오 : http://docs.spring.io/spring/docs/4.1.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#ejb-access-local

    setter injection을 사용하여 EJB를 주입 할 수 있습니다. 다음과 같이 bean을 구성하십시오.

    <bean id="myComponent" class="org.springframework.ejb.access.LocalStatelessSessionProxyFactoryBean">
        <property name="jndiName" value="ejb/myBean"/>
        <property name="businessInterface" value="com.mycom.MyComponent"/>
    </bean>
    
    <bean id="myController" class="com.mycom.myController">
        <property name="myComponent" ref="myComponent"/>
    </bean>
    

    또한 태그를 사용하여 EJB를 삽입 할 수 있습니다.

    <jee:local-slsb id="myComponent" jndi-name="ejb/myBean"
            business-interface="com.mycom.MyComponent"/>
    
    <bean id="myController" class="com.mycom.myController">
        <property name="myComponent" ref="myComponent"/>
    </bean>
    
  3. from https://stackoverflow.com/questions/23008810/ejb-3-injection-into-spring-beans by cc-by-sa and MIT license