jboss_with_websocket

JBoss with WebSocket

Red Hat JBoss 엔터프라이즈 애플리케이션 플랫폼 (EAP)

  • 4.x
  • 5.x
  • 6.x
  • 7.x
  • EAP 7.0 이상
  • EAP 6.4.x
    • WebSocket을 사용하기 위해서 반드시 NIO HTTP Connector를 사용해야 합니다. 구현은 서버 엔드 포인트에 대한 완전한 종속성 주입 지원을 제공하지만 클라이언트 엔드 포인트에 대한 CDI 서비스를 제공하지 않습니다. CDI 지원은 EE6플랫폼에 필요한 것으로 제한 되며, 결과적으로 엔드 포인트에 대한 인터셉터와 같은 EE7 기능은 지원되지 않습니다. JBoss EAP 6.4.0 릴리스 노트 - 섹션 §2.1을 참조하십시오.

지원하지 않는 버전

  • EAP 6.4 이전 릴리즈 :
    • WebSockets은 EAP 6.3에서 기술 프리뷰로 제공되었습니다만 프로덕션 환경에서 지원되지 않습니다. EAP 6.3 릴리스 정보를 참조하십시오.

httpd 2.4.37 SP8+ 이상버전 에서만 가능합니다. 참조: https://access.redhat.com/solutions/3294391
mod_cluster 설정에 아래와 같이 추가합니다.

EnableWsTunnel
WSUpgradeHeader websocket

그외의 이전버전에서는 웹 소켓은 mod_cluster 사용시 지원되지 않습니다.
관련링크 : https://issues.redhat.com/browse/MODCLUSTER-438

웹 소켓에 대한 프록 싱을 처리하는 Apache mod_proxy_wstunnel 호출 모듈이 있습니다. 이 모듈은 현재 JBoss Web Server 3.0 Apache HTTPD 이상에서 사용할 수 있습니다. 구성 예는 다음과 같습니다.

1) httpd.conf에서 다음 행의 주석 처리를 제거하십시오.

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

2) 단일 노드로 프록 싱하려면 다음을 사용하여 $HTTPD_HOME/conf.d/mod_proxy_wstunnel.conf 파일을 새로 만듭니다.

<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName localhost
ServerAlias localhost


RewriteEngine On
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /app(.*) ws://localhost:8080/app$1 [P,L]

ProxyPass /app http://localhost:8080/app
ProxyPassReverse /app http://localhost:8080/app


<Proxy *>
      Order deny,allow
      Allow from all
</Proxy>
</VirtualHost>

3) 밸런서를 사용하려면 $HTTPD_HOME/conf.d/mod_proxy_wstunnel.conf파일을 새로 만듭니다.


<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName localhost
ServerAlias localhost

   <Proxy balancer://wscluster>
       BalancerMember ws://127.0.0.1:8080 route=node1
       BalancerMember ws://127.0.0.1:8180 route=node2
       ProxySet stickysession=JSESSIONID|jsessionid
   </Proxy>

   <Proxy balancer://httpcluster>
       BalancerMember http://127.0.0.1:8080 route=node1
       BalancerMember http://127.0.0.1:8180 route=node2
       ProxySet stickysession=JSESSIONID|jsessionid
   </Proxy>

   RewriteEngine On
   RewriteCond %{HTTP:Connection} upgrade [NC]
   RewriteCond %{HTTP:Upgrade} websocket [NC]
   RewriteRule /app(.*) balancer://wscluster/jboss-websocket-hello$1 [P,L]

   ProxyPass /app balancer://httpcluster/app
   ProxyPassReverse /app balancer://httpcluster/app
</VirtualHost>

JBoss CLI에서 아래와 같이 설정 하도록 한다.

[standalone@node11:9999 /] /subsystem=web/connector=http/:write-attribute(name=protocol,value=org.apache.coyote.http11.Http11NioProtocol)
{
    "outcome" => "success",
    "response-headers" => {
        "operation-requires-reload" => true,
        "process-state" => "reload-required"
    }
}
[standalone@node11:9999 /] reload
로그인하면 댓글을 남길 수 있습니다.
  • jboss_with_websocket.txt
  • 마지막으로 수정됨: 2022/01/25 09:26
  • 저자 koov