블로그 이미지
OSSW(Open Source System SoftWare

calendar

            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

Notice

JBoss에서 디렉토리 검색 기능을 제거

EAP버전: ${JBOSS)HOME}/deployers/jbossweb.deployer/web.xml

커뮤니티버전: /jboss/jboss-6.1.0.Final/server/default/deploy/jbossweb.sar/web.xml

 

<servlet>

<servlet-name>default</sevlet-name>

<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>

 

<init-param>

<param-name>debug</param-name>

<param-value>0</param-value>

</init-param>

<init-param>

<param-name>listings</param-name>

<param-value>false</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

 

by. 강수현(9월)

'1. 미들웨어이야기 > 03. JBoss' 카테고리의 다른 글

JBoss 디렉토리 검색기능제거  (0) 2014.12.03
JBoss Session 튜닝-2  (0) 2014.12.03
JBoss Session 튜닝  (0) 2014.12.03
jboss connection pool  (0) 2014.12.03
Jboss EAP 6 튜닝의포인트  (0) 2014.12.02
JBoss EAP5.X 에서 JSP 변경시 재컴파일 방법‏  (0) 2014.12.02
posted by lovelywas

Session 튜닝

파일명: application/WEB-INF/jboss-web.xml

<replication-trigger> : JBoss 에서 지원하는 세션 변경 여부 판단 기준.

 SET

 setAttribute() 시 세션이 변경된 것으로 간주

 SET_AND_NON_PRIMITIVE_GET

 setAttribute() 뿐만 아니라 변경 가능한 object에 대한 getAttribute() 시 세션이 변경된 것으로 간주. 디폴트 설정

 SET_AND_GET

 setAttribute() 뿐만 아니라 getAttribute() 시에도 세션이 변경된 것으로 간주

 ACCESS

 HTTP 요청이 있을 때마다 session이 변경된 것으로 간주

 

<replication-granularity>: JBoss에서 3가지 복제 단위를 지원합니다.  

SESSION 

 세션을 통째로 복제

 ATTRIBUTE

 세션에서 변경된 attribute만을 복제

 FIELD

 Attribute object의 변경된 필드만을 복제

SESSION-->ATTRIBUTE-->FIELD 순으로 복제단위는 더 세분화 됩니다.

허나, 복제 단위를 세분화 하는데 따르는 오버헤드가 있기 때문에 단순히 세분화할수록 좋은 것은 아니니 시스템 환경에 맞게 설정하시면 됩니다.

by. 강수현(11월)

 

'1. 미들웨어이야기 > 03. JBoss' 카테고리의 다른 글

JBoss 디렉토리 검색기능제거  (0) 2014.12.03
JBoss Session 튜닝-2  (0) 2014.12.03
JBoss Session 튜닝  (0) 2014.12.03
jboss connection pool  (0) 2014.12.03
Jboss EAP 6 튜닝의포인트  (0) 2014.12.02
JBoss EAP5.X 에서 JSP 변경시 재컴파일 방법‏  (0) 2014.12.02
posted by lovelywas
  • Session time-out

JBoss의 기본 세션시간은 30분으로 측정되어 있습니다.

벼경을 원하실 경우 아래 web.xml 을 참고로 수정하시면 됩니다. ( restart는 필수)

파일명: web.xml

파일 경로: /jboss/jboss-6.1.0.Final/server/default/deploy/jbossweb.sar

 

 

<!-- ======================Default Session Configuration ================ -->

<!-- You can set the default session timeout ( in minutes) for all newly -->

<!-- created sessions by modifying the value below -->

<sessoin-config>

<session-timeout>30</session-timeout>

</session-config>

 

 

  • 세션 변경 여부 기준

JBoss Clustering 세션관리자는 HTTP 요청 처리 후 변경된 세션을 클러스터를 구성하는 각 노드로 복제합니다.

파일명: application/WEB-INF/jboss-web.xml

 

 <jboss-web>

<replication-config>

<replication-trigger>SET</replication-trigger>

<replication-granularity>SESSION</replication-granularity>

</replication-config>

</jboss-web>

-by 강수현(11월)

 

'1. 미들웨어이야기 > 03. JBoss' 카테고리의 다른 글

JBoss 디렉토리 검색기능제거  (0) 2014.12.03
JBoss Session 튜닝-2  (0) 2014.12.03
JBoss Session 튜닝  (0) 2014.12.03
jboss connection pool  (0) 2014.12.03
Jboss EAP 6 튜닝의포인트  (0) 2014.12.02
JBoss EAP5.X 에서 JSP 변경시 재컴파일 방법‏  (0) 2014.12.02
posted by lovelywas

JBoss connction pool 설정


<jndi-name>abc_DS</jndi-name>

        <connection-url>jdbc:mysql://10.10.10.10:1111/aaa</connection-url>

        <driver-class>com.mysql.jdbc.Driver</driver-class>

 

        <user-name>aaa1</user-name>

        <password>abc12</password>

 

        <min-pool-size>1</min-pool-size>

        <max-pool-size>10</max-pool-size>

        <prefill>true</prefill>


위와 같이 커넥션 풀을 설정 할 수 있으나,

weblogic과 달리 was instance가 기동하면서 기본적으로 min-pool-size만큼의

커넥션을 맺지 않고,

요청이 오면 추가로 pool이 생성되는 방식이다.


그러므로 was가 기동될 때부터 connection pool을 min값만큼 생성하려면

<prefill>true</prefill>

옵션을 추가하면 된다.

되도록이면 min, max값은 동일한 것이 서비스 급증 시 커넥션을 추가로 맺게되는 db부하를 줄일 수 있다.

'1. 미들웨어이야기 > 03. JBoss' 카테고리의 다른 글

JBoss Session 튜닝-2  (0) 2014.12.03
JBoss Session 튜닝  (0) 2014.12.03
jboss connection pool  (0) 2014.12.03
Jboss EAP 6 튜닝의포인트  (0) 2014.12.02
JBoss EAP5.X 에서 JSP 변경시 재컴파일 방법‏  (0) 2014.12.02
JBoss Log Level 변경  (0) 2014.12.02
posted by LE07

구분

 

지시어

기본값

 

WEB

HTTP

Timeout

300

비활성화된 연결에 대하여 얼마나 오랫동안 HTTP 연결을 유지하고 있을지를 설정

 

 

KeepAliveTimeout

15

아파치 프로세스 (또는 쓰레드 클라이언트가 또다른 HTTP 요청을 보내기 전까지 대기해야 하는 시간을 설정

 

mod-jk

socket_timeout

0

mod-jkdhk was 통신채널에서 사용하는 타임아웃정해진 시간동안 응답이 없으면 에러를 발생, 0으로 세팅하면 무제한 대기

 

 

socket_connect_timeout

socket_timeout*1000

socket_timeout 같지만 milliseconds 단위로 타임아웃을 설정할 있다

 

 

socket_keepalive

FALSE

웹서버와 WAS 사이에 방화벽이 있는 경우 사용된다 플래그는 운영체제에 비활성화된 커넥션에 대해서 KEEP_ALIVE메세지를 보냄으로써 방화벽이 비활성화된 커넥션을 끊는 것을 방지한다.

 

 

ping_timeout

10000

Millisecond 단위의 타임아웃값. Cping 커넥션확인의 응답인 CPong  기다릴 사용된다

 

 

reply_timeout

0

WEB에서 WAS 처리되어 응답이 올때까지 대기시간

 

 

connection_pool_timeout

0

mod-jk 커넥션을 닫기 전에 몇초 동안 Cache Inactive소켓을 유지할지 결정하기 위하여 Cache timeout 프로퍼티가 connection_pool_minsize 같이 사용된다

WAS

HTTP/AJP

connectionTimeout

0

요청이 처리 때까지 커넥션을 유지하는 시간으로기본은 무제한

 

 

keepAliveTimeout

-

WAS에서 새로운 요청을 받기 전까지 대기하는 시간기본은 connectionTimeout 값을 따라감

 

 

session timeout

30

요청이 들어온 새로운 요청이 들어올때까지의 대기시간그시간안에 다시 요청이 오면 해당 값은 갱신됨

 

DB

querytimeout

0

JDBC 쿼리 타임아웃기본값음 제한없음

 

 

loginTimeout

dbms 확인필요

DBMS 새로운 연결을 생성시 해당 DBMS Login 하고 Connection  획득할때까지 대기 시간

 

 

blocking timeout millis

30000

Millisecond 단위로 커넥션을 가져올 때까지 대기할 있는 최대 시간지정

 

 

idle timeout minutes

30

풀에 있는 커넥션 사용하지 않는 커넥션에 대해 주기적으로 삭제해당 시간동안 사용하지 않은 커넥션을 삭제하며 검사주기는 지정값/2

 

 

set tx query timeout

FALSE

트랜잭션 타임아웃이 발생하기까지 남아있는 시간을 기준으로 쿼리 타임 아웃을 설정할 것인지를 설정

 

 

allocation retry

0

커넥션을 가져올 예외가 발생할 재시도 횟수를 지정

 

 

allocation retry wait millis

5000

연결 할당까지 대기하는 시간

by 차규철

'1. 미들웨어이야기 > 03. JBoss' 카테고리의 다른 글

JBoss Session 튜닝  (0) 2014.12.03
jboss connection pool  (0) 2014.12.03
Jboss EAP 6 튜닝의포인트  (0) 2014.12.02
JBoss EAP5.X 에서 JSP 변경시 재컴파일 방법‏  (0) 2014.12.02
JBoss Log Level 변경  (0) 2014.12.02
JBoss Log 설정  (0) 2014.12.02
posted by lovelywas

JBoss 5. 대에서는 기본적으로 JSP 설정이 운영모드로 되어 있기 때문에 JSP 파일을 변경하더라도 적용되지 않습니다.

 JSP 설정을 개발모드로 설정하는 방법 .

 (*)변경 파일 위치

${JBOSS_HOME}/server/test/deployers/jbossweb.deployer/web.xml

 (*)web.xml 에서 JSP 설정 부분 확인

  <servlet>

      <servlet-name>jsp</servlet-name>

      <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>

      <init-param>

         <param-name>fork</param-name>

         <param-value>false</param-value>

      </init-param>

      <init-param>

         <param-name>development</param-name>

         <!--param-value>true</param-value-->

         <param-value>false</param-value>

      </init-param>

 </servlet>

by 차규철

posted by lovelywas

기능별 Log Level 변경

JBoss 에서는 인스턴스 내 구현 기능에 따라 log의 설정 및 Level 변경을 할 수가 있습니다.

파일명: jboss-logging.xml

파일경로: /jboss/jboss-6.1.0.Final/server/default/deploy

<!-- ============================================= -->

<!-- Setup the Root category -->

<!-- ============================================= -->

 <root-logger>

<!-- Set the root logger priority via a system property, with a default value -->

<level name=${jboss.server.log.threshold:INFO}"/>

<handlers>

<handler-ref name="CONSOL"/>              //console Log부분 정의

<handler-ref name="FILE"/>                    //file Log 부분 정의

</handlers>

</root-logger>

JBoss는 기본적으로 Jakarta Commons Logging 및 Log4j를 포함하고 있습니다.

따라서 로깅 설정은 Log4j를 기반으로 설정하고 위 내용을 참고로 설정을 INFO-->DEBUG 등으로 변경할 수가 있습니다.

 

--by. 강수현(10월)

 

posted by lovelywas

boot.log 와 server.log

JBoss의 로깅시스템은 두 군데서 이루어 집니다. boot.log 와 server.log로 나뉘는데 boot.log 파일은 JBoss Microcontainer의 초기화 및 JBoss bootstrap에 대한 로그를 기록하는 파일이며, server.log 파일은 이 이후 모든 JBoss의 시스템 로그를 기록하는 파일입니다.

- access.log 설정

파일명: server.xml

파일 경로: /jboss/jboss-6.1.0.Final/server/default/deploy/jbossweb.sar

<Host name="localhost">

<!-- Access logger -->

<!--

<Valve ClassName="org.apache.catalina.valves.AccessLogValve"

prefix="access_log." suffix=".log"

pattern="common" directory="/jb_log/default/access/"

resolveHosts="false" />

-->

위 해당부분의 주석을 제거해야 access.log파일이 생성되며, apache access.log 외에 jboss의 access.log를 설정할 경우 jboss로 직접 호출되는 http-listen 의 호출 상태를 파악하는데 도움이 됩니다.

-by 강수현(10월)

 

posted by lovelywas
JBoss EAP6 (AS7) 의 웹 서브시스템은 클라이언트 요청에 대해서 스레드를 할당해 처리한다. 웹 서브시스템은 클라이언트의 요청을 수신하면 풀에서 대기 상태의 스레드를 할당하고 요청이 완료(클라이언트에의 응답 완료 시)되면 스레드 풀에 반환한다.

클라이언트 요청이 들어왔을 때 스레드 풀이 최대값에 도달하지 않는 경우 새로운 스레드를 생성하여 할당한다. 스레드 풀이 최대값에 도달한 경우에는 클라이언트와 연결되지 않는다. 클라이언트의 동시 접속 수는 이 스레드 풀의 최대값에 의해 결정된다. 스레드 풀은 커넥터마다 생성하여 관리한다. 

Http와 AJP 커넥터에서  사용자 요청을 처리하기 위해서는 미리 최대 사용자에 맞게 커넥터의 "Max Connections" 수와 thread 생성에 제한이 없는 unbounded-queue-thread-pool을 할당해 놓는다.

다음은  Http 커넥터에 unbounded-queue-thread-pool executor 를  설정하는 과정이다. 


1. AJP Connector 생성과  max-connections  설정하기

위치
속성
설명
/subsystem=web/connector=ajp
max-connections
  • 할당된 스레드 풀의 최댓값. 
  • 기본값은 JVM이 사용할 수 있는 CPU 코어수 × 512 
  
1-1. ajp connector 생성 하기

[domain@localhost:9999 /] /profile=default/subsystem=web/connector=ajp:add(socket-binding=ajp, protocol="AJP/1.3", enabled=true, scheme=http)
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => undefined
}

1-2 ajp connector 에 max-connections 설정하기

[domain@localhost:9999 /] /profile=default/subsystem=web/connector=ajp:write-attribute(name=max-connections,value=2000)
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => undefined
}

 
2. AJP Connector 를 위한 Thread Factory 정의

[domain@localhost:9999 /] /profile=default/subsystem=threads/thread-factory=ajp-connector-factory:add(thread-name-pattern="AJP-%t", priority="9", group-name="uq-thread-pool")
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => undefined
}

3. AJP Connector 를 위한 Executor 생성

[domain@localhost:9999 /] /profile=default/subsystem=threads/unbounded-queue-thread-pool=uq-thread-pool:add(thread-factory="ajp-connector-factory", keepalive-time={time=30, unit="seconds"}, max-threads=30)
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => undefined
}

4. AJP Connector 에 새로 생성한 Thread Pool를 지정

[domain@localhost:9999 /] /profile=default/subsystem=web/connector=ajp:write-attribute(name=executor, value="uq-thread-pool")
{
    "outcome" => "success",
    "result" => undefined,
    "server-groups" => undefined
}

5. 생성한 내용을 확인 

5-1. 다음과 같이 domain.xml 에 profile=defalut에 subsystem=thread 에 생성된 것을 확인한다.

      <subsystem xmlns="urn:jboss:domain:threads:1.1">
                <thread-factory name="ajp-connector-factory" group-name="uq-thread-pool" thread-name-pattern="AJP-%t" priority="9"/>
                <unbounded-queue-thread-pool name="uq-thread-pool">
                    <max-threads count="30"/>
                    <keepalive-time time="30" unit="seconds"/>
                    <thread-factory name="ajp-connector-factory"/>
                </unbounded-queue-thread-pool>
            </subsystem>

5-2. 다음과 같이 domain.xml 에 profile=default 에 subsystem=web 에서 변경된 것을 확인한다.
 
        <subsystem xmlns="urn:jboss:domain:web:1.5" default-virtual-server="default-host" native="false">
                <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" />
                <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" enabled="true" executor="uq-thread-pool" max-connections="2000"/>
                <virtual-server name="default-host" enable-welcome-root="true">
                    <alias name="localhost"/>
                    <alias name="example.com"/>
                </virtual-server>
            </subsystem>

 

출처 오픈나루 블로그

 

by 차규철 

posted by lovelywas

JBoss Service Binding Manager에서 제공하는 binding set은 ports-default, ports-01, ports-02, ports-03이 있으며, 그 외에 인스턴스를 더 추가할 때에는 아래와 같이 설정합니다.

bindings-jboss-beans.xml 

파일 경로: /jboss/jboss-6.1.0.Final/server/default/conf/bindingservice.beans/META-INF

<!-- The binding sets -->

<parameter>

   <set>

<inject bean="PortsDefaultBindings"/>

<Inject bean="Ports01Bindings"/>

<Inject bean="Ports02Bindings"/>

<Inject bean="Ports03Bindings"/>

<Inject bean="Ports04Bindings"/> <-- 추가

<Inject bean="Ports05Bindings"/> <-- 추가

<Inject bean="Ports06Bindings"/> <-- 추가

  </set>

<!-- The ports-04 bindings are obtained by taking ports-default and adding 400 to each port value -->

 <bean name="Ports04Bindings" class="org.jboss.services.binding.impl.ServiceBindingSet">

  <contructor>

<!-- The name of the set -->

<parameter>ports-04</parameter> <-- 4,5,6 port를 추가해줘야지만 부팅

<!--Default hostname-->

<parameter>${jboss.bind.address}</parameter>

<!--The port offset-->

<parameter>400</parameter>    <-- 4 = 400, 5 = 500, 6= 600

<!-- Set of bindings to which the "offset by X" approach can't be applied -->

<parameter><null/></parameter>

   </constructor>

 </bean>

 

by. 강수현(8월)

posted by lovelywas

JBoss Security

Java에서 제공하는 보안관련 세부 기능 중 JBoss security를 기준으로 매핑된 내용을 나열하였습니다.

실제로는 이것보다 훨씬 더 많은 내용들이 매핑되지만, 웹 어플리케이션, EJB 등에서 사용하는 보안위주로 다루겠습니다.

 

구분 

JBoss Security 매핑 

 Cryptography

- 웹 서비스 보안(WS-Security)에서 SOAP메세지를 안전하게 송수신 하기 위해 사용합니다.

- 프로토콜 수준에서 암호화를 제공하는 SSL에서 사용합니다.

- Login Module 적용 시 패스워드 암호화를 위해 사용합니다.  

 Authentication and Access Control

- 웹애플리케이션의 인증 시 사용합니다.

- EJB의 method permission 적용 시 사용합니다.  

 Secure Communitication

- 웹 컨테이너의 HTTP Connector 에서 SSl을 사용합니다.

- EJB의 리모트 호출 시 사용하는 소켓에 대해서 SSL을 사용합니다.

- JMS의 비동기 메세지 송수신시 사용하는 소켓에 대해서 SSL을 사용합니다. 

 PKI(Public Key Infrastructure)

- 웹서비스 보안(WS-Security)에서 SOAP메세지 암호화를 위해서 사용합니다.

- 웹 애플리케이션에서 인증서를 기반으로 인증 시 사용합니다.

- Keystore / Truststore 생성 시 사용합니다.  

※SSL(  Secure Socket Layer ) 인증키 적용이나, 데이터베이스 MD5 Password Encoder, Massage Digest Password Encoder 등 일상생활에서 자주 사용하는 Security는 모두 지원합니다.

- by 강수현(8월)

posted by lovelywas

JBoss만 사용하는 시스템인데, http로 들어온 요청을 모두 https로 변경하는 방법은 다음과 같습니다.

여러가지 방법이 있는데 앞단에 웹서버가 없는 경우 다음과 같이 설정하시면 됩니다.


1. deploy/jboss-web.deployer/conf/web.xml 에 다음의 설정 security-constraint설정 추가.


<security-constraint>

    <web-resource-collection>

        <web-resource-name>App_nmae</web-resource-name>

        <url-pattern>/*</url-pattern>

        <http-method>GET</http-method>

        <http-method>POST</http-method>

    </web-resource-collection>

    <user-data-constraint>

        <transport-guarantee>CONFIDENTIAL</transport-guarantee>

    </user-data-constraint>

</security-constraint>



2. deploy/jboss-web.deployer/server.xml에 80 포트에 대해서 https로 redirect 하도록 설정

- 기본적으로 redirectPort=8443과 같이 설정이 되어 있습니다. 별도로 수정을 안하셔도 됩니다.


<Connector port="80" address="${jboss.bind.address}"    

         maxThreads="150" maxHttpHeaderSize="8192"

         emptySessionPath="true" protocol="HTTP/1.1"

         enableLookups="false" redirectPort="443" acceptCount="100"

         connectionTimeout="20000" disableUploadTimeout="true" compression="on" />


<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"

          maxThreads="150" scheme="https" secure="true"

          clientAuth="false" sslProtocol="TLS" 

          keystoreFile="/opt/apache-tomcat-6.0.13/.keystore"

          keystorePass="changeit"/> 



by hyeons (12월)

posted by lovelywas
prev 1 2 3 4 next