JBOSS 시리즈(1) - EJB 원격 호출 - 클라이언트 구성

3561 단어
EJB 액세스 방식은 원격 클라이언트 액세스, 로컬 클라이언트 액세스, WebService 클라이언트로 구분됩니다.
이른바 EJB의 원격 호출이란 클라이언트와 서버의 EJB 대상이 같은 JVM 프로세스에 있지 않다는 것이다.
로컬 클라이언트는 클라이언트와 서버의 EJB 객체가 같은 JVM 프로세스에 있다는 의미입니다.
웹 서비스 클라이언트는 무상태 세션 빈의 인터페이스에 접근할 수 있으며, 업무 논리 방법이 @WebMethod로 표시될 때만 웹 서비스 클라이언트가 접근할 수 있습니다.
 
원격 호출
원격 호출이 없을 때 우리는 다른 사람의 데이터를 사용해야 하기 때문에 다른 사람의 인터페이스와 실현을 직접 가져왔다. 이어서 자신의 가방에 넣었다. 이렇게 하면 한편으로는 코드의 군더더기를 초래하고 자신의 가방이 크며 다른 한편으로는 원격 호출도 아니다.
다음에 우리는 원격 호출로 개선하여 다른 사람의 인터페이스를 직접 호출하면 조작할 수 있다.이런 장점은 인터페이스를 대상으로 프로그래밍을 하고 구조가 뚜렷하며 유연하다는 것이다.
 
클라이언트 구성:
1. 당연히 호출해야 하는 EJB의 BEAN은 원격이어야 한다.
@Stateless(name="ClassEao")
@Remote(ClassEao.class)
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class ClassEaoImpl extends ExamBase<Class> implements ClassEao {

	

}

우리는 EAO의 실현에 원격 주석을 달았다.
 
2. 우리는 빈을 주입할 때 원격 JNDI를 사용하여 자신의 웹 층spring-mvc를 사용해야 한다.xml 내 설정, 즉
<jee:jndi-lookup id="SchoolTeachingBean"
		jndi-name="ejb:itoo-basic-schoolteaching-ear/itoo-basic-schoolteaching-core-0.0.1-SNAPSHOT/SchoolTeachingBeanImpl!com.tgb.itoo.basic.service.SchoolTeachingBean"
		environment-ref="evn">
	</jee:jndi-lookup>

위의 jndi-name에 주의하십시오. 우리의 프로젝트는ear 패키지로 만들어졌고ear의 버전 번호를 삭제했습니다.
<build>
<finalName>${project.artifactId}</finalName>
</build>

응용 프로그램 Context-common.xml 구성은 다음과 같습니다.
<util:properties id="evn"
		location="classpath:config/jboss-ejb-client.properties"></util:properties>

이러한 목적은 vn을 통해 해당하는 JBOSS의 설정을 찾는 것이다. 즉, 원격 호출이 필요한 JBOSS의 IP, 포트 번호, 사용자 이름과 비밀번호이다.
3. 자신의 웹 층에 프로필 jboss-ejb-client를 추가합니다.properties
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
org.jboss.ejb.client.scoped.context=true
jboss.naming.client.ejb.context=true
Context.URL_PKG_PREFIXES=org.jboss.ejb.client.naming
javax.naming.Context.INITIAL_CONTEXT_FACTORY=org.jboss.naming.remote.client.InitialContextFactory
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connectionprovider.create.options.org.xnio.Options.SSL_STARTTLS=false
jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false
remote.connections=one
remote.connection.one.host=192.*.*.*
remote.connection.one.port=4447
remote.connection.one.username=adminks
remote.connection.one.password=!adminks123

주로 IP와 포트 번호, 원격 호출이 필요한 JBOSS의 계정 이름과 비밀번호를 설정하는 동시에 우리는 JBOSS에서 여러 개의 원격 호출 인터페이스를 설정할 수 있다.
 
4, 마지막 단계, 자신의 ear 가방에 jboss-deployment-structure를 추가합니다.xml 구성은 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
		<sub-deployment name="itoo-assess-studentassess-web-0.0.1-SNAPSHOT.war">
		<dependencies>
			<module name="org.jboss.xnio" />
		</dependencies>
	</sub-deployment>
</jboss-deployment-structure>

현재 사용되고 있는 JBOSS 버전은 eap6.2로 이전 버전과 비교해 모듈의 개념을 추가했기 때문에 상기 설정을 추가한 것은 Warm 가방 안의 jndi 설정을 찾기 위해서입니다.
 
요약:
위에서 EJB가 원격 호출한 클라이언트의 설정을 소개했는데 주로 현재 JBOSS가 버전을 업그레이드한 후에 두드러진 점은 JBOSS의 모듈화이다. 이 사랑하고 미워하는 모듈화가 일련의 문제를 해결하고 일련의 문제를 해결했기 때문이다.다음 블로그에서는 JBOSS 구성을 원격으로 호출하는 방법에 대해 설명합니다.

좋은 웹페이지 즐겨찾기