문서의 이전 판입니다!
JBoss with WebSocket
환경
Red Hat JBoss 엔터프라이즈 애플리케이션 플랫폼 (EAP)
- 4.x
- 5.x
- 6.x
- 7.x
WebSocket 지원 여부
- EAP 7.0 이상
- JBoss EAP (Enterprise Application Platform) 7 지원되는 구성을 참조하십시오.
- 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 사용시 지원되지 않습니다.
관련링크 : https://issues.redhat.com/browse/MODCLUSTER-438
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