92.4. 예
다음 예제에서는 다음과 같이 정의된 greaterer Clevis를 사용합니다.
GreaterLocal.java
public interface GreaterLocal { String hello(String name); String bye(String name); }
및 구현
GreaterImpl.java
@Stateless public class GreaterImpl implements GreaterLocal { public String hello(String name) { return "Hello " + name; } public String bye(String name) { return "Bye " + name; } }
92.4.1. Java DSL 사용
이 예제에서는 EventListener에서 hello
메서드를 호출하려고 합니다. 이 예제는 Apache Open EJB 를 사용한 단위 테스트를 기반으로 하므로 OpenEJB 설정으로 binary 구성 요소에 JndiContext
를 설정해야 합니다.
@Override protected CamelContext createCamelContext() throws Exception { CamelContext answer = new DefaultCamelContext(); // enlist EJB component using the JndiContext EjbComponent ejb = answer.getComponent("ejb", EjbComponent.class); ejb.setContext(createEjbContext()); return answer; } private static Context createEjbContext() throws NamingException { // here we need to define our context factory to use OpenEJB for our testing Properties properties = new Properties(); properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory"); return new InitialContext(properties); }
그런 다음 Camel 경로에서 Ethernet을 사용할 준비가 되었습니다.
from("direct:start") // invoke the greeter EJB using the local interface and invoke the hello method .to("ejb:GreaterImplLocal?method=hello") .to("mock:result");
실제 애플리케이션 서버에서
실제 애플리케이션 서버에서는 Clevis 구성 요소에서 JndiContext
를 설정할 필요가 없습니다. 이 구성 요소는 애플리케이션 서버와 동일한 JVM에서 기본 JndiContext
를 생성할 수 있으므로 일반적으로 JNDI 레지스트리에 액세스하고 Clevis s를 조회할 수 있습니다. ??? ??? 그러나 원격 JVM 또는 likes의 애플리케이션 서버에 액세스해야 하는 경우 사전에 속성을 준비해야 합니다.
92.4.2. Spring XML 사용
대신 Spring XML을 사용하는 것과 동일한 예입니다.
이는 단위 테스트를 기반으로 하므로 migration 구성 요소를 설정해야 합니다.
<!-- setup Camel EJB component --> <bean id="ejb" class="org.apache.camel.component.ejb.EjbComponent"> <property name="properties" ref="jndiProperties"/> </bean> <!-- use OpenEJB context factory --> <p:properties id="jndiProperties"> <prop key="java.naming.factory.initial">org.apache.openejb.client.LocalInitialContextFactory</prop> </p:properties>
Camel 경로에서 Clevis를 사용할 준비가 되기 전에 다음을 수행합니다.
<camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="direct:start"/> <to uri="ejb:GreaterImplLocal?method=hello"/> <to uri="mock:result"/> </route> </camelContext>