원격 EJB 사용
Socket 포트 구성
ejb-security-realm
EJB를 원격으로 호출하려면 다음 단계를 수행합니다.
첫 번째 쓰기 서버 사이드 서비스
2단계 사용자 구성
3단계 포트 구성
4단계 EJB 구성
5단계 클라이언트 구성
6단계 쓰기 클라이언트
첫 번째 쓰기 서버 사이드 코드
원격 EJB는 반드시 인터페이스를 써야 한다. EJB를 배운 사람들은 모두 로컬 EJB가 인터페이스가 없을 수 있다는 것을 안다.
이곳은 간편하기 위해서 저는 EAR이나jar의 방식으로 배치하지 않습니다. 저는 War로 원격 EJB를 배치합니다.
인터페이스
package ejbserver;
public interface HelloService {
String say();
}
실현류
package ejbserver;
import javax.ejb.Remote;
import javax.ejb.Stateless;
@Remote(HelloService.class)
@Stateless
public class HelloServiceBean implements HelloService {
@Override
public String say() {
return "Hello world!";
}
}
그러면 간단한 서버 사이드 코드가 완성됩니다.
2단계, 사용자 구성
사용자를 설정하는 것은 필수적입니다. 안전을 위해서입니다. 만약에 원격 EJB가 인터넷에 놓여 있으면 누구나 접근할 수 있습니다. 그러면 상업 데이터는 임의로 수정되고 접근할 수 있기 때문에 발생할 손실은 예측할 수 없습니다!
먼저 JBOSS Wildfly의add-user 프로그램을 사용하여 사용자를 추가합니다.
내 컴퓨터에서 이 명령은 아래 위치에 있다
D:\WebServer\wildfly-9.0.2.Final\bin\add-user.bat
사용자를 추가한 후 다음 파일에 데이터를 한 줄 삽입합니다
D:\WebServer\wildfly-9.0.2.Final\standalone\configuration\application-users.properties
ejb=5aeed860e2461b9cbda91264f3b600dd
겨우 이 정도면 충분합니까?
NO!standalone를 설정해야 합니다.xml의 보안 영역,
<management>
……
<security-realms>
……
<security-realm name="ejb-security-realm">
<server-identities>
<secret value="dGVzdA=="/>
</server-identities>
</security-realm>
</security-realms>
……
</management>
3단계 포트 구성
<socket-binding-group
name="standard-sockets"
default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
……
<outbound-socket-binding name="remote-ejb">
<remote-destination host="localhost" port="8080"/>
</outbound-socket-binding>
</socket-binding-group>
4단계 EJB 구성
이 구성의 역할은 위의 두 구성을 EJB로 연결하는 것입니다.서버의 원격 EJB 서비스가 이 포트와 이 사용자를 사용하도록 하는 것과 같다!
<subsystem xmlns="urn:jboss:domain:remoting:3.0">
<endpoint worker="default"/>
<http-connector
name="http-remoting-connector"
connector-ref="default" security-realm="ApplicationRealm"/>
<outbound-connections>
<remote-outbound-connection name="remote-ejb-connection" outbound-socket-binding-ref="remote-ejb"
username="ejb"
security-realm="ejb-security-realm" protocol="http-remoting">
<properties>
<property
name="SASL_POLICY_NOANONYMOUS" value="false"/>
<property name="SSL_ENABLED" value="false"/>
</properties>
</remote-outbound-connection>
</outbound-connections>
</subsystem>
5단계 클라이언트 구성
classpath의 루트 디렉터리에 이 파일을 쓰십시오
/jboss-ejb-client.properties
실제 응용 프로그램에서 이 파일을 생성된 jb-client에 놓을 수 있습니다!
파일 내용은 다음과 같습니다.
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port=9080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.default.username=ejb
remote.connection.default.password=test
6단계 클라이언트 코드 쓰기
위에 쓴 서버 인터페이스 코드를 복사해 보세요.
그리고 호출
복잡한 구축 환경을 피하기 위해서, 나는 여기에서 직접 servlet으로 호출한다.
/**
* Servlet implementation class HelloServlet
*/
@WebServlet("/hello.html")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Hashtable<String, String> jndiProperties = new Hashtable<>();
jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
try {
Context context = new InitialContext(jndiProperties);
HelloService ejb = (HelloService) context.lookup("ejb:/ejbserver/HelloServiceBean!ejbserver.HelloService");
response.getWriter().append(ejb.say());
} catch (Exception e) {
}
response.getWriter().append("Served at: ").append(request.getContextPath());
}
}
마지막 실행:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
jboss 설정 방법 간단명료한 강좌본고는 jboss 설정 방법을 서술하였다.다음과 같이 여러분에게 참고할 수 있도록 공유합니다. jboss-5.1.0.GA-jdk6.zip 구성: 1. JDK 설치 후 구성: 환경 변수에 JAVA_ 추가JDK의 설치 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.