JBoss with WebSocket

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

  • 4.x
  • 5.x
  • 6.x
  • 7.x

WebSocket 지원 여부

  • 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 릴리스 정보를 참조하십시오.

MOD_CLUSTER가있는 WEBSOCKET

웹 소켓은 현재 mod_cluster에서 지원되지 않습니다.

MOD_PROXY_BALANCER가있는 WEBSOCKET

mod_proxy_wstunnel웹 소켓에 대한 프록 싱을 처리하는 Apache 호출 모듈이 있습니다 . 이 모듈은 현재 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 6.4 HTTP Connector NIO 변경

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

NIO 및 Websocket 설정 관련 참고내용

Websocket 지원 버전 확인

로그인하면 댓글을 남길 수 있습니다.
  • jboss_with_websocket.txt
  • 마지막으로 수정됨: 2017/07/18 19:06
  • 저자 admin