반응형

1. Web.xml 파일 수정 내역 

<filter>
		<filter-name>monitoring</filter-name>
	    <filter-class>net.bull.javamelody.MonitoringFilter</filter-class>
		<init-param>
			<param-name>authorized-users</param-name>
			<param-value>id:password</param-value>
		</init-param>
	</filter>
	
	<filter-mapping>
		<filter-name>monitoring</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<listener>
	    <listener-class>net.bull.javamelody.SessionListener</listener-class>
	</listener>

	<login-config>
		<auth-method>BASIC</auth-method>
		<realm-name>Monitoring</realm-name>
	</login-config>
 
	<security-role>
		<role-name>monitoring</role-name>
	</security-role>
 
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>Monitoring</web-resource-name>
			<url-pattern>/monitoring</url-pattern>
		</web-resource-collection>
		<auth-constraint>
			<role-name>monitoring</role-name>
		</auth-constraint>
	</security-constraint>

 

2. JEUSMain.xml  변경내역

 

<application>
      <name>javamelody</name>
      <path>/jeus/webapp</path>
      <deployment-type>COMPONENT</deployment-type>
      <web-component>
         <context-root>/</context-root>
      </web-component>
      <deployment-target>
         <target>
            <engine-container-name>eng2_monitoring</engine-container-name>
         </target>
      </deployment-target>
   </application>

 

반응형

'WAS > JEUS' 카테고리의 다른 글

제우스에서 log4sql 사용하기  (0) 2011.03.15
JEUS 5 세션 공유  (0) 2011.03.09
JEUSMain.xml Datasource 암호 설정  (0) 2011.01.13
IBM JVM 튜닝 - 3  (0) 2009.08.24
제우스 환경 설정 부분  (0) 2009.03.05
반응형

 

설치 : http://naver.github.io/pinpoint/1.8.4/main.html

 

Pinpoint 1.8.4 | Leading Open-Source APM

What’s New in 1.8.4 If you want to communicate data between Span and Stat over TCP , we highly suggest upgrading your agent to 1.8.4 as it includes a bug fix for it. Enhancements Allow collector to log received span/stat packet count Avoid storing excessiv

naver.github.io

 

http://naver.github.io/pinpoint/1.8.4/installation.html

 

Installation | Leading Open-Source APM

To set up your very own Pinpoint instance you can either download the build results from our latest release, or manually build from your Git clone. In order to run your own Pinpoint instance, you will need to run below components: HBase (for storage) Pinpo

naver.github.io

1. 자바 6 ~ 9 까지 설치 후 JAVA_X_HOME 설정

2. mvnw 명령어를 사용하여 빌드

3. 설치 폴더/quickstart/bin 아래

   - ./start-hbase.sh (DB 시작)

   - ./init-hbase.sh (Table 생성 작업으로 최초 한번)

   - ./start-collector.sh (콜렉터 시작)

   - ./start-web.sh

===== TEST App 수행 ====

   - ./start-testapp.sh

 

4. 접근 UI

    WEB UI : http://localhost:28080

    TEST UI : http://localhost:28081

 

5. Stop (START 반대)

  설치 폴더/quickstart/bin 아래

   ./stop-testapp.sh

   ./stop-web.sh

   ./stop-collector.sh

   ./stop-hbase.sh

 

 

반응형
반응형

요즘은 WAR 배포 단위가 많아진것 같다.

 

회사에서도 홈페이지 개발해서 적용하는 프로젝트를 WAR를 배포하는데

 

여기서 문제가 발생했다.

 

1. 환경 : tomcat

2. server.xml 환경 설정을 사용하여 자동 unpack

 

몇주간 잘 사용하다가

 

STS(Spring Tool Suite) 기능 때문에 파일 업로드 살펴볼까 하고 보다가

 

다음과 같은 문제점을 발견했다.

 

1. 요즘은 보안상의 이유로 상위 디렉토리 자체를 접근하면 안됨

2. Tomcat의 자동 WAR unpack 기능을 쓰면 기존 폴더를 어디론가(?) 사라지고

   똑같은 이름의 폴더가 생성됨

 

해결 방안

1. Tomcat 자동 WAR unpack 기능 중지

2. 수동으로 기존 folder delete

3. 수동으로 WAR unpack 작업

 


 

1. Tomcat 자동 WAR unpack 기능 중지

- 파일 위치 : Tomcat 설치 위치/conf/server.xml 

- 변경 내용

  WAR 자동 deploy 설정 끄기 (unpackWARs 옵션 false) 

  <Host name="localhost" appBase="webapps"

           unpackWARs="false" autoDeploy="true">

 

※ 위 설정 적용을 위해 tomcat은 재기동 합니다. (그 이후에는 자동 WAR unpack 중지 / autoDeploy는 적용)

 

2.  수동으로 기존 Folder 삭제 및 3. 수동으로 WAR unpack 작업

unzip 을 사용하여 위치를 설정하는 방식으로 적용

다음과 같은 deploy 반영하는 쉘을 적용

 

WAR_DIR : tomcat 폴더 홈 디렉토리 + webapps 폴더 까지 경로

ex) /www/tomcat 에 tomcat이 설치됐다면

     WAR_DIR="/www/tomcat/webapps"

 

아래 예제는 unzip이 설치된 것으로 설정하였으니

 

반드시 unzip 명령어를 쳤을때 정상인 것을 확인하고 적용해야 함.

# delete old deploy folder
rm -rf ${WAR_DIR}/homepage/META-INF
rm -rf ${WAR_DIR}/homepage/org
rm -rf ${WAR_DIR}/homepage/WEB-INF

# WAR unpack
unzip ${WAR_DIR}/homepage.war -d ${WAR_DIR}/homepage/

 

반응형
반응형

systemctl 명령어를 통한 시작 방식은

 

root로만 접근해야 하는 것이라

 

WAS(tomcat)의 기동 및 중지 권한을 넘겨주고

 

재부팅시에도 자동으로 시작될수 있도록(tomcat 계정)

 

할려면 다음과 같다.

 

1. 퍼미션 부여

chmod 755 /etc/rc.d/rc.local

 

2. rc.local 실행 명령어 추가

아래는 tomcat 계정으로 서비스를 시작한다는 명령어

nohup su - tomcat -c /home/tomcat/apache-tomcat-8.5.40/bin/startup.sh &

 

3. rc.local 서비스 등록

위와 같이 해도 rc.local이 시작시에 시작되려고 하려면

아래와 같이 rc-local 서비스가 시작상태여야 함 (한번만 시작하면 계속 시작되어 있음)

#> systemctl start rc-local

 

 

반응형
반응형

갑자기 개발자분이 특정 IP 대역에서

 

무차별 웹 페이지 검색이 일어난다고 알려주셨네요

 

응?

 

Tomcat 상에서는 server.xml 파일 내역을 통해

 

특정 여러 IP들을 막을수 있습니다.

 

아래 예제는 111.222.111.222 IP와 111.222.111.223 IP를 웹 접속시 403 에러를 발생시켜 접근 금지시키는 설정입니다.

(IP 사이에 . 앞에 \를 붙이지 않아도 동작 하기는 합니다만, 정식 설정 페이지에서는 \를 붙이는 것을 가이드함)

 

관련 Apache 페이지 : http://tomcat.apache.org/tomcat-9.0-doc/config/valve.html

 

<Context path="" docBase="/" reloadable="true">

   <Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="111\.222\.111\.222|111\.222\.111\.223" />

</Context>

 

하는 김에 서버 자체에 대한 접근을 막는것도 추가를 하였습니다.

 

우리 서버는 소중하니까요!

 

다만, 유동 IP에는 위험할 수는 있습니다.

(제 IP가 바뀌니까요!)

 

/etc/hosts.deny

 

sshd:ALL
mysqld:ALL

 

아래는 회사가 11.73.xxx.xxx 대역대에 있다는 가정하에 작성합니다.

 

(참고 : http://www.findip.kr/  사이트에 방문하면 외부에서 보여지는 (NAT 설정 등....) IP 주소를 확인 가능합니다.)

 

/etc/hosts.allow

sshd:11.73.
mysqld:11.73.

 

모두 마쳤으면

 

아래와 같이 서비스를 재시작 합니다.

 

# service mysqld restart

# service sshd restart

반응형
반응형

기본적으로 systemctl 명령을 통한 방식 (CASE 1)과 Startup.sh 및 Shutdown.sh 2가지 방식(CASE 2)이 있습니다.

 

설정하는 환경에 따른 차이로

 

공통적으로 시작 및 종료를 하기 위해서는

 

정확하게 쉘을 수행하는 것이 좋습니다.

 

systemctl 명령을 통해 시작한 tomcat은 Shutdown.sh를 수행하여도

 

잠시뒤에 다시 시작하는 현상도 볼수 있습니다.

 

1. Tomcat 시작하는 쉘

- CASE 1 방식

# Systemctl 서비스 시작 방식

MYID=`whoami`

# CHECK WAS PORT
WASPORT=`lsof -i TCP:80 | grep -i java | wc -l`

if [ ${WASPORT} -gt 0 ]; then
        echo ""
        echo "====================================="
        echo " 이미 WAS(Tomcat)가 실행 중입니다."
        echo ""

        echo " 종료한 뒤 수행해 주세요."
        echo "===================================="
        echo ""

        exit 0

fi

if [ ${MYID} = "root" ]; then
        systemctl start tomcat
else

        echo " root 계정만 실행 가능합니다."
fi

- CASE 2 방식

# WAS 서비스 시작 방식
WASHOME='/apache-tomcat-8.5.40/bin'

MYID=`whoami`

# CHECK WAS PORT
WASPORT=`lsof -i TCP:80 | wc -l`

if [ ${WASPORT} -gt 0 ]; then
        echo ""
        echo "====================================="
        echo " 이미 WAS(Tomcat)가 실행 중입니다."
        echo ""

        echo " 종료한 뒤 수행해 주세요."
        echo "===================================="
        echo ""

        exit 0

fi

if [ ${MYID} = "root" ]; then
        cd ${WASHOME}
        ./startup.sh
else

        echo " root 계정만 실행 가능합니다."
fi

 

2. Tomcat 종료하는 쉘

- CASE 1

# Systemctl 서비스 종료 방식
MYID=`whoami`

# CHECK WAS PORT
WASPORT=`lsof -i TCP:80 | wc -l`

if [ ${WASPORT} -eq 0 ]; then
        echo ""
        echo "====================================="
        echo " WAS가 기동중인 상태가 아닙니다."
        echo ""

        echo " 종료한 뒤 수행해 주세요."
        echo "===================================="
        echo ""

        exit 0

fi

if [ ${MYID} = "root" ]; then
        systemctl stop tomcat
else

        echo " root 계정만 실행 가능합니다."
fi

- CASE 2

# WAS 서비스 종료 방식
WASHOME='/apache-tomcat-8.5.40/bin'

MYID=`whoami`

# CHECK WAS PORT
WASPORT=`lsof -i TCP:80 | wc -l`

if [ ${WASPORT} -eq 0 ]; then
        echo ""
        echo "====================================="
        echo " WAS가 기동중인 상태가 아닙니다."
        echo ""

        echo " 종료한 뒤 수행해 주세요."
        echo "===================================="
        echo ""

        exit 0

fi

if [ ${MYID} = "root" ]; then
        cd ${WASHOME}
        ./shutdown.sh
else

        echo " root 계정만 실행 가능합니다."
fi

 

3. 서비스 포트에 수행되는 PID 확인

# Tomcat 기준

echo ""
echo "==================================================="
echo ""
echo " Use Port : 80, 8005, 8009, 8443, 8080 "
echo ""
echo "==================================================="

echo ""
echo "***************************************************"
echo " 1. Search : 80 Port "
lsof -i TCP:80
echo "***************************************************"
echo ""

echo ""
echo "***************************************************"
echo " 2. Search : 8005 Port "
lsof -i TCP:8005
echo "***************************************************"

echo ""
echo "***************************************************"
echo " 3. Search : 8009 Port "
lsof -i TCP:8009
echo "***************************************************"

echo ""
echo "***************************************************"
echo " 4. Search : 8443 Port "
lsof -i TCP:8443
echo "***************************************************"

echo ""
echo "***************************************************"
echo " 5. Search : 8080 Port "
lsof -i TCP:8080
echo "***************************************************"

echo ""

 

4. tomcat 에 WAR 파일 Deploy 하는 쉘

echo ""
echo "===================================================================="
echo ""
echo " Deploy Shell "
echo ""
echo "===================================================================="

############################# Define Path ################################
BACKUP_ROOT="/home/tomcat/backup"
WAR_DIR="/apache-tomcat-8.5.40/webapps"
WAR_FILE="deploy.war"

##########################################################################


if [ $# -eq 1 ]; then


        echo ""
        echo " 1. Check Deploy File Exist....."
        echo ""

        if [ -f $1 ]; then

                echo ""
                echo " 2. Check WAR File Exist..... "

                if [ -f ${WAR_DIR}/${WAR_FILE} ]; then

                        echo ""
                        echo " 3. Exist deploy.war File Backup"
                        echo "    Backup Folder => $BACKUP_ROOT "
                        echo ""

                        BK_NAME=`date +%Y%m%d_%H%M%S`

                        echo " *  cp ${WAR_DIR}/${WAR_FILE} ${BACKUP_ROOT}/${WAR_FILE}_${BK_NAME}"
                        cp ${WAR_DIR}/${WAR_FILE} ${BACKUP_ROOT}/${WAR_FILE}_${BK_NAME}
                        echo ""

                else

                        echo " *  Don't Backup Run becase, War File Not Exist "
                fi

                # delete old deploy folder
###                rm -rf ${WAR_DIR}/factory

                # Deploy File
                echo " *  cp $1 ${WAR_DIR}/${WAR_FILE}"
                cp $1 ${WAR_DIR}/${WAR_FILE}
                echo ""
                echo " >>> Please Restart Tomcat Service"
                echo ""

        else
                echo ""
                echo " $1 File not Exist .... Please check!"
                echo ""
        fi

else

        echo ""
        echo " Usage : $0 ${WAR_FILE} "
        echo ""
fi

echo ""
echo "===================================================================="
echo ""

 

반응형
반응형

어느날 갑자기

 

잘 WAR 배포 되던 사이트에서

 

tomcat 시작시 오류가 발생했습니다.

 

물론 간헐적으로 종종 있었지만,

 

아에 시작이 안되는 오류가 발생한것은 처음이었지요

 

-------------------- 오류 내역 ----------------------

 

23-Apr-2019 08:41:39.156 심각 [Catalina-startStop-1] org.apache.catalina.core.ContainerBase.startInternal A child container failed during start
 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        ... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@1e50349c]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4885)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5020)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
Caused by: java.lang.IllegalArgumentException: The main resource set specified [/factory] is not valid
        at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:748)
        at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:706)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 9 more

 

23-Apr-2019 08:41:39.158 심각 [main] org.apache.catalina.core.ContainerBase.startInternal A child container failed during start
 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:688)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)
        ... 8 more

 

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        ... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@1e50349c]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4885)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5020)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
Caused by: java.lang.IllegalArgumentException: The main resource set specified [/factory] is not valid
        at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:748)
        at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:706)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 9 more

 

23-Apr-2019 08:41:39.160 심각 [main] org.apache.catalina.startup.Catalina.start The required Server component failed to start so Tomcat is unable to start.
 org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:688)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 11 more
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)
        ... 13 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more

 

-------------------------------------------------------------

 

해당 원인

1. Tomcat JMX(Java Management Extensions) 사용 + STS JMX 사용 = 2개 포트 중복으로 인한 충돌 발생
2. Local 개발 환경에서는 Tomcat을 사용하지 않아 발생하지 않음
3. 개발 서버에서는 Startup 시 Tomcat JMX가 먼저 부팅되는 경우(그동안) 정상적으로 UP이 되었으나
    언젠가는 발생해야 하는 문제였음.

해결 방법

1. STS 에서 사용하는 JMX 사용하지 않기(Tomcat만 사용하기)
    application.properties 설정 변경 방식 => 이 방식 설정 (우리는 JMX를 쓰지 않음, 만약 쓰고 싶다면 2번 해결 방식 참고)
2. STS에서 사용하는 JMX 포트 변경
    There are a few things we could do to avoid the error. We could open the editor again and change the JMX port as well, or we could disable ‘Live Bean Support’. But probably we don’t really want to run more than one copy of our app in this scenario. So we should just stop the already running instance before launching a new one. As this is such a common thing to do, STS provides a Relaunch Toolbar Button for just this purpose. Click the Button, the running app is stopped and restarted with the changes you just made to the Launch Configuration now taking effect. If it worked you should now have a 404 error page at http://localhost:8888 instead of 8080. (Note: the Relaunch button won’t work if you haven’t launched anything yet because it works from your current session’s launch history. However if you’ve launched an app at least once, it is okay to ‘Relaunch’ an app that is already terminated)

    https://spring.io/blog/2015/03/18/spring-boot-support-in-spring-tool-suite-3-6-4

관련 정보

1. 외국 관련 정보 사이트
https://stackoverflow.com/questions/28607506/disabling-jmx-in-a-spring-application/30853954  


application.properties 추가 내역
============================================================================================================================ 
 
# Prevent Spring from automatically exposing beans to JMX. Tomcat automatically creates an MBean when setting the
# JNDI data source, and an error gets thrown if spring then tries to add the data source MBean itself.
# 번역 : Spring이 자동으로 Bean을 JMX에 노출시키는 것을 방지한다. Tomcat은 JNDI 데이터 소스를 설정할 때 자동으로 MBean을 만들고, 스프링이 데이터 소스 MBean 자체를 추가하려고하면 오류가 발생합니다.
#
org.springframework.jmx.export.UnableToRegisterMBeanException 예외처리용
spring.jmx.enabled=false

============================================================================================================================

1. 스트링 부팅 application.properties 환경 설정 (config 정보들)
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html


2. jmx 란?

참고 : https://en.wikipedia.org/wiki/Java_Management_Extensions
Java Management Extensions 의 약자로 각종 프로그램/장치 등을 모니터링/관리 하기 위한 API 입니다.

출처 : https://gs.saro.me/dev?tn=467

 

 

반응형
반응형




1. ROOT 계정 접속

   # cd ${WEBTIER_ORACLE_HOME}/ohs/bin

   ==> # /SYSTEM/webtier/Oracle_WT1/ohs/bin

   

2. ls -al으로 확인 후 .apachectl 권한 및 액세스 권한 변경

   # chown root .apachectl

   # chmod 6750 .apachectl 

   

   -rwxr-x--- 1 webtier users .apachectl

   --> rwsr-s--- root   users .apachectl

   

3. 일반 유저 접속 후 OHS httpd.conf 에서 Group 변경

   # su - webtier

   $ cd ${INSTANCES_HOME}/config/OHS/ohs1

   $ vi httpd.conf

   

   ... 생략 ...

   

   User webtier

   #Group GROUP_TEMPLATE

   Group users

   </IfModule>

   

  * DocumentRoot 옵션이 웹 파일 디렉토리임.

4. OHS 재시작

         

반응형
반응형

출처 : http://westzero.net/40

이 글을 클릭하셨다면 log4sql 이 뭔지는 다들 알고 들어 오셨을겁니다.
만약 모르신다면 제가 일전에 소개한 포스트 'System.out.println()은 잊어라 log4sql이 온다.'를 보고오시면 됩니다.

※ 이 글은 제우스에서 DataSource를 사용할 경우에만 해당되는 사항입니다.

log4sql은 직접적으로 DataSource를 지원하지 않습니다. 그리고 제우스에서도 직접적으로 드라이버 클래스를 지정할 수 없습니다.
따라서 제우스에서는 원하는 드라이버 클래스를 지정하려면 BlackboxConnectionPoolDataSource를 사용해야 합니다.

지정하는 방법은 다음 순서대로 따라하시면 됩니다.
  1. 먼저 log4sql.jar를 $JEUS_HOME/lib/application 경로에 넣어 주세요.
  2. $JEUS_HOME/호스트명/JEUSMain.xml 파일을 열어 다음과 같이 수정하세요
    [code]
    <database>
        <vendor>oracle</vendor>
        <export-name>oracledb</export-name>
        <data-source-class-name>jeus.jdbc.driver.blackbox.BlackboxConnectionPoolDataSource</data-source-class-name>
        <data-source-type>ConnectionPoolDataSource</data-source-type>
        <property>
            <name>DriverClassName</name>
            <type>java.lang.String</type>
            <value>core.log.jdbc.driver.OracleDriver</value>
        </property>
        <property>
            <name>URL</name>
            <type>java.lang.String</type>
            <value>jdbc:oracle:thin:@192.169.30.244:1521:ora9i</value>
        </property>
        <property>
            <name>User</name>
            <type>java.lang.String</type>
            <value>scott</value>
        </property>
        <property>
            <name>Password</name>
            <type>java.lang.String</type>
            <value>tiger</value>
        </property>
    </database>
    [/code]
  3. 이제 제우스를 실행시켜서 적용이 되었는지 확인하면 됩니다.
생각보다 간단하게 끝났습니다.^^

저는 BlackboxConnectionPoolDataSource을 몰라서 약 3일간 삽질을 하다가 티맥스 테크넷의 'Spy를 사용하여 SQL 로그 보기' 를 보고 알았습니다. 그리고 나중에 찾아보니 테크넷에 저보다 먼저 log4sql 적용 방법을 문의하신 분도 계시더군요.

테크넷은 회원가입을 해야하고 쉽게 찾기가 어려워 이렇게 따로 포스팅을 올립니다.
이렇게 포스트로 작성하면 구글링으로 쉽게 찾을 수 있을꺼에요.^^
반응형

'WAS > JEUS' 카테고리의 다른 글

JAVA Melody Jeus 추가  (0) 2019.12.02
JEUS 5 세션 공유  (0) 2011.03.09
JEUSMain.xml Datasource 암호 설정  (0) 2011.01.13
IBM JVM 튜닝 - 3  (0) 2009.08.24
제우스 환경 설정 부분  (0) 2009.03.05
반응형

답변입니다.
 
먼저 확인하는 내용입니다.
1. http://inho21.com/ 요청과 http://inho21.com/TEMS/ 라는 요청들에 대한 Context 간 Session 공유로 확인합니다.
2. http://inho21.com 라는 도메인으로 요청이 들어오며, 이는 웹서버를 통하여 들어온다고 확인합니다.
 
올려주신 설정은 확인하였습니다.
먼저 WEBMain.xml에서 context간 Session 공유에서 단일 도메인이기 때문에 <session-cookie> 설정은 없어도 됩니다.
======================================================================================
      <session-config>
         <distributable>true</distributable>
         <shared>true</shared>
         <timeout>600</timeout>
         <reload-persistent>true</reload-persistent>
      </session-config>
   </context-group>
   <session-server>
      <primary-server>hoya21</primary-server>
   </session-server>
</web-container>
======================================================================================
 
그리고 JEUSMain.xml에서 세션 서버를 설정하셨고, WEBMain.xml에서 <distributable>true</distributable> 로 설정하셨기 때문에 중앙집중식으로 세션 서버를 사용하시고, 이에 대하여 Container간 단일 Session Server를 사용하게 됩니다.
 
이와 같이 되었다면 다음 jeuadmin `hostname` -Uadministrator -P{설치시 암호} 를 실행하여,
console 관리툴에 들어가시기 바랍니다.
그 후, st -s 를 입력하셨을 경우(한개의 컨테이너 일 경우)
Context(Application) 갯수인 2개가 나오지 않고, 1개로 나오는지를 확인하시기 바랍니다.
1개로 나와야 두개의 Context가 하나의 Session Server를 사용하고 있다는 것입니다.
 
이후, 각 Context간 Session이 공유되는지를 확인하시기 바랍니다.
 
감사합니다.
 
 
ps. 샘플 소스로 Session.jsp 라는 소스를 올립니다. 세션이 공유 되고 있다면, 한 브라우저에서 /Session.jsp 호출 후, /TEMS/Session.jsp 호출시 하나의 JSessionID로 나와야 하며, 뒤에 호출된 것에 대해서 isNew() 값은 false로 나와야 합니다.
 
Session.jsp
======================================================================================
<%@ page language="java" session="true" contentType="text/html; charset=euc-kr" %>
<%
    out.println("test <br>");
    out.println("Session ID : "+session.getId() + "<br>");
    out.println("Session Creation Time : "+new java.util.Date(session.getCreationTime()) + "<br>");
    out.println("Session Last Access Time : "+new java.util.Date(session.getLastAccessedTime()) + "<br>");
    out.println("Session TimeOut : "+session.getMaxInactiveInterval() + "<br>");
    out.println("Session is new? "+session.isNew() + "<br>");
%>
======================================================================================
 
 
 

<질문 내용>
 
JEUS6.0 #Fix6
동일안 컨테이너에 컨텍스트 구분만 해서 사용합니다.
사용 컨텍스트 : '/', '/TEMS' 2개
node name : hoya21
가상도메인 : inho21.com
 
 
제목을 '세션공유에 대한 x차 질문입니다.' 라고 해서 계속 세팅을 하고 있습니다.
이전답변에서는 동일한 컨테이너에 컨텍스트를 등록하면 세션공유가 된다고 했던것 같은데...
4차 답변에서는 동일한 컨테이너 일지라도 컨텍스트간 세션공유가 되지 않는다..라는 답변이 있었고,
이것을 해결할려면 patch를 받아야 한다고 했습니다.
 
현재는 개발중 테스트 목적으로 개발자 노트북에 JEUS를 설치해서 동작 확인 및 설정을 하고 있습니다.
해서 JEUS6.0 #Fix6을 받아 설치하고, 같이 제공하는 patch를 설치했습니다.
데모버젼에서는 세션공유가 안되고, 정식라이센스를 발급 받은 서버에서만 세션공유를 위한 patch파일을
배포하는것인지 알고 싶습니다.
 
개발자의 입장에서 세션공유 테스트를 하려면 더이상 어찌 해야하는지도 답변을 주시면 감사하겠습니다.
 
--------------------------------------------아래---------------------------------------------
 
- JEUSMain.xml
   <node>
      <name>hoya21</name>
        <!-- Session Server Setting -->
        <session-server>
          <type>primary</type>
          <resolution>60000</resolution>
          <connect-timeout>5000</connect-timeout>
          <read-timeout>20000</read-timeout>
          <passivation-to>-1</passivation-to>
          <removal-to>1800000</removal-to>
          <check-to>30000</check-to>
        </session-server>

- WEBMain.xml
      <session-config>
         <!-- This Option is JEUS Session Server Use : Default - false -->
         <!-- If this Option is true, All Context Group Use JEUS Session Server -->
         <distributable>true</distributable>
         <!-- If this Option is true, All Context Group Share Session -->
         <!-- This Option is All Context Group Application Share Session : Default - false -->
         <shared>true</shared>
         <timeout>600</timeout>
         <reload-persistent>true</reload-persistent>
         <session-cookie>
            <jsessionid-name>JSESSIONID2</jsessionid-name>
            <domain>.inho21.com</domain>
         </session-cookie>
      </session-config>
   </context-group>
   <!-- Session Clustering Setting for No Node Clustering -->
   <session-server>
      <primary-server>hoya21</primary-server>
   </session-server>
</web-container>
 
출처 : http://technet.tmax.co.kr/kr/inquiry/qna/jeus/readBoardForm.do?bbsCode=qna_jeus&fc=inquiry&sc=inquiry_qna&tc=inquiry_qna_jeus&currentPage=1&seqNo=41849&categoryId=&productCode=&range=10&searchType=TITLE&searchText=%EA%B3%B5%EC%9C%A0





















JEUS Enterprise버전에서는 SessinServer를 제공합니다.
데모라이센스를 사용하시는 경우 기능제약이 없으므로 설정이 가능합니다.
 
JEUS Server안내서 9장과 JEUS Web Container안내서 8장을 참조하시어 SessionServer를 설정하시면
세션 공유가 가능합니다.
 
== JEUSMain.xml 파일
<jeus-system>
    . . .
    <node>
        . . .
        <session-server>
            <session-manager>
                <name>session1</name>
                <passivation-to>1800000</passivation-to>
                <removal-to>3600000</removal-to>
            </session-manager>
        </session-server>
        . . .
    </node>
 
위와 같이 Session Manager를 설정해 두고
 
== WEBMain.xml 파일 (3개의 컨테이너에 동일하게 설정)
<?xml version="1.0"?>
<web-container xmlns="http://www.tmaxsoft.com/xml/ns/jeus">
        . . .
    <session-cluster>
        <session-server>
            <server-name>session1</server-name>
            <connect-timeout>120000</connect-timeout>
            <read-timeout>120000</read-timeout>
        </session-server>
    </session-cluster>

와 같이 설정하시면 사용이 가능합니다.
 
위의 설정은 간략히 설정한 것입니다.
세부적인 옵션과 용도는 매뉴얼을 참고하시기 바랍니다.
 
 
 
----------------------------------------------------------------
안녕하세요
session 공유 대한 문의 드립니다.
 
현재 사용중이 jeus(jeus 5.0)에 컨테이너 3개를 설정하여
 
웹사이트를  3개를 운영 하려고 합니다. 웹 사이트 1 에  로그인후 session 을 유지 하면서
 
웹사이트 1~ 3 까지 공유하여 세션이 끈어지지 않게 할수 없는지 궁금합니다.


출처 :  http://technet.tmax.co.kr/kr/inquiry/qna/jeus/readBoardForm.do?bbsCode=qna_jeus&fc=inquiry&sc=inquiry_qna&tc=inquiry_qna_jeus&currentPage=4&seqNo=38491&categoryId=&productCode=&range=10&searchType=TITLE&searchText=%EA%B3%B5%EC%9C%A0
반응형

'WAS > JEUS' 카테고리의 다른 글

JAVA Melody Jeus 추가  (0) 2019.12.02
제우스에서 log4sql 사용하기  (0) 2011.03.15
JEUSMain.xml Datasource 암호 설정  (0) 2011.01.13
IBM JVM 튜닝 - 3  (0) 2009.08.24
제우스 환경 설정 부분  (0) 2009.03.05

+ Recent posts