신고

'01.Java' 카테고리의 다른 글

Arrays.asList의 UnsupportedOperationException  (1) 2012.09.05
Apache Flume-NG structure  (0) 2012.07.18
JMX Url  (0) 2012.04.02
run Hadoop Mapreduce Job Remotely(Cluster)  (0) 2012.03.13
Exception Handling vs. Error Logging  (0) 2012.02.14
JUnit Test. 그리고 Stub, Mock  (0) 2011.12.27
Posted by Stewie

run Tomcat as a Daemon

07.Web 2012.07.03 16:01


tomcat을 시작 후 shutdown.sh 종료하는 경우는 stop관련 log가 출력이 된다. (catalina.log)

만약 kill (kill -9 말고)로 ps를 죽이게 된다면 어떻게 될까?


답은, 역시 stop관련 log가 출력이 된다.


이유가 뭘까 싶어 좀 찾아봤다. 해답은,


Runtime.getRuntime().addShutdownHook(shutdownHook);


이 코드였다.shutdown hook을 추가하게 되면 tomcat jvm의 종료가 되는 시점에 shutdownHook의 객체(Thread 타입)가 실행되기 때문에 필요한 종료동작 및 logging 후 안전히 프로세스를 종료하게 된다.



여기서 한가지 의문이 더 들었다.


tomcat의 경우 apache commons daemon lib가 동봉되어 있어 daemon형태로 돌리기 위해서는

jsvc를 통해 구동을 하면 된다고 알고 있는데 자체적으로 shutdown hook 메커니즘이 있는데도

별도로 이렇게 하는 이유는 뭘까? 

(물론 kill -9은 jsvc든 shutdownhook이던 전부 operational signal을 catch할 수 없다.)


daemon이란 

-유닉스와 같은 멀티태스킹 운영체제에서 데몬(daemon, 발음: 데이먼/'de?m?n/ 또는 디먼 /'dim?n/[1])은 

사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다.


tomcat의 경우 기본 port(8080)이 아닌 다른 포트, 예를들어 privilege port(under 1024, 예) HTTP 80)를

사용하기 위해서는 root 권한이 필요한데 이런 경우 jsvc를 통해 root가 아닌 user로

대신 daemon으로 등록할 수 있다.



그렇다면, 기본 포트를 사용할 것이고, httpd와 연동을 할 계획이라면 어떻게 해야하나?


요건 다음번에.......


<출처>

http://stackoverflow.com/questions/11147853/value-of-adding-commons-daemon-to-an-app

http://christopherhunt-software.blogspot.kr/2009/07/replacing-jsvc-for-java-daemons.html

http://fnords.wordpress.com/2010/04/22/tomcat-improvements-coming-up-in-10-04/

신고
Posted by Stewie

Maven Default Properties

Note: In Maven 3.0, all pom.* properties are deprecated. Use project.* instead!

Built in properties

${basedir} represents the directory containing pom.xml 
${version} equivalent to ${project.version} or ${pom.version

Pom/Project properties

All elements in the pom.xml, can be referenced with the project. prefix or using pom. as prefix. This list is just an example of some commonly used elements.

${project.build.directory} results in the path to your "target" dir, this is the same as ${pom.project.build.directory} 
${project.build.outputDirectory} results in the path to your "target/classes" dir 
${project.name} or ${pom.name} refers to the name of the project. 
${project.version} or ${pom.version} refers to the version of the project. 
${project.build.finalName} refers to the final name of the file created when the built project is packaged 
${project.artifactId} refers to the artifact id

Local user settings

Similarly, values in the user's settings.xml can be referenced using property names with settings. prefix.

${settings.localRepository} refers to the path of the user's local repository. 
${maven.repo.local} also works for backward compatibility with maven1 ?? 

Environment variables

Environment variables can be referenced using the env prefix

${env.M2_HOME} returns the Maven2 installation path. 
${java.home} specifies the path to the current JRE_HOME environment use with relative paths to get for example:

<jvm>${java.home}..//bin//java.exe</jvm> 

Java system properties

All Java System Properties defined by the JVM.

Custom properties in the POM

User defined properties in the pom.xml. 

<project>
...
  <properties>
    <my.filter.value>hello</my.filter.value>
  </properties>
...
</project>


${my.filter.value} will result in hello if you inserted the above XML fragment in your pom.xml 

Parent Project variables

How can parent project variables be accessed? You can use the prefix: ${project.parent}. A good way to determine possible variables is to have a look directly at the API. I'm currently using Maven 2.2.1, and to access the Parent you can use${project.parent}. This will return an org.apache.maven.project.MavenProject instance. 

To access the parent version: ${parent.version}.

Reflection Properties

The pattern ${someX.someY.someZ} can simply sometimes mean getSomeX().getSomeY().getSomeZ(). Thus, properties such as${project.build.directory} is translated to getProject().getBuild().getDirectory()

<출처>

http://www.captaindebug.com/2011/01/maven-default-properties.html

신고

'03.Build Process' 카테고리의 다른 글

Maven Default Properties  (0) 2012.06.29
Hudson Remote Run API  (0) 2012.05.17
Maven Dependency Version Range  (0) 2012.05.11
Hudosn을 통한 Maven depoly => Nexus  (0) 2012.02.17
package emma:emma 의 goal 은 Test를 2번한다?  (0) 2012.01.02
Jenkins plugin Install (Emma, N'SIQ)  (0) 2011.12.26
Posted by Stewie


티스토리 툴바