Translate

2016년 1월 31일 일요일

[Java][Spring Boot] Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean 에러




Spring Boot Version: 1.3.0.RELEASE



증상

개발한 프로그램을 IntelliJ 에서 구동 시 문제없이 구동이 되나 실행가능한 jar 파일로 만든 후 구동 시 아래와 같은 로그가 발생하며 프로그램이 종료된다.


00:43:51.874 [main] INFO  o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext - Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4157f54e: startup date [Sun Jan 31 00:43:51 KST 2016]; root of context hierarchy
'
00:43:53.016 [main] WARN  o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
00:43:53.027 [main] ERROR o.s.boot.SpringApplication - Application startup failed
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133) ~[testApp.jar:na]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:531) ~[testApp.jar:na]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) ~[testApp.jar:na]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) [testApp.jar:na]
at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:347) [testApp.jar:na]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:295) [testApp.jar:na]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1112) [testApp.jar:na]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1101) [testApp.jar:na]
at {PackageName}.{ClassName}.main(MsPushSchApplication.java:14) [testApp.jar:na]
Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory(EmbeddedWebApplicationContext.java:183) ~[testApp.jar:na]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:156) ~[testApp.jar:na]
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130) ~[testApp.jar:na]
... 8 common frames omitted







원인

Spring Boot 를 포함한 의존성 jar 파일을 만들려는 jar 파일에 모두 포함되도록 설정하여 1개의 jar 파일을 생성 시 위와같은 증상이 발생하는 것으로 보아 IDE 버그나 CLASS 충돌로 의심이 된다.

=================================
2016.02.02 업데이트
1004lucifer
Maven 을 사용하지 않고 IDE(Eclipse, IntelliJ) 툴에서 바로 Export 받았기 때문에 문제가 된 것이며 Maven 을 통해 빌드하여 jar 파일 생성 시 정상적으로 되는것을 확인했다.
=================================








해결방법

반나절 넘게 해결방법을 찾아봤지만 찾을 수 없어서 결국 의존성 jar 파일을 합치지 않는 방법으로 생성 후 실행 하니 정상적으로 프로그램이 구동되었다.

* 나와 동일한 증상을 가지고 있는 사람이 있었다.
http://stackoverflow.com/questions/35078117/error-unable-to-start-embeddedwebapplicationcontext-due-to-missing-embeddedser


PS.
IntelliJ 에서 jar 파일을 만들기 위해 'artifact' 생성 시 아래와 같이 설정을 변경해 준다.
(IntelliJ 에서 'META-INF/MANIFEST.MF' 버그가 있다. => 링크)




=================================
2016.02.02 업데이트

Maven 을 사용해서 빌드하여 jar 파일 생성 시 정상적으로 구동 되는것을 확인했다.

IntelliJ 에서 아래와 같이 빌드를 했다.



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


[IntelliJ] 실행 가능한 Jar 파일 생성 시 'xxx.jar에 기본 Manifest 속성이 없습니다.' 오류증상




확인한 IntelliJ ver: 14.1.5, 14.1.6


PS.
IntelliJ 버그(Link)로 보여지며 해결방법 하단의 증상 및 원인을 읽어보길 바란다.



해결방법

자동으로 생성되는 'META-INF/MANIFEST.MF' 파일을
java 디렉토리가 아니라 resources 디렉토리로 설정을 해야 한다.


잘못된 방법






올바른 방법






IntelliJ 에서 Jar 파일을 만들기 위해 'Artifact' 생성 시 default 로 src 하위에 'META-INF/MANIFEST.MF' 를 생성하게 되는데 경로를 'resources' 로 변경을 해준다.









증상

정상적으로 실행 가능한 jar 파일을 만들었다고 생각을 했는데
xxx.jar에 기본 Manifest 속성이 없습니다.
오류가 발생했다.
1004lucifer
해당 jar 파일 압축을 풀어서 MANIFEST.MF 파일을 확인해 보니 다음과 같이 되어있었다.


 Manifest-Version: 1.0
 Build-Jdk: 1.6.0_26
 Built-By: ibrandt
 Created-By: Apache Maven
 Archiver-Version: Plexus Archiver





하지만 프로젝트에 실제 셋팅 되어있는 MANIFEST.MF 파일의 내용은 아래와 같았다.


Manifest-Version: 1.0
Class-Path: junit-4.12.jar logback-core-1.1.3.jar tomcat-embed-core-8.0.28.jar spring-boot-starter-validation-1.3.0.RELEASE.jar json-simple-1.1.1.jarjavapns-jdk16-2.3.jar {...}
Main-Class: org.salim.push.MsPushSchApplication






한참을 구글 검색을 해보니 'META-INF' 디렉토리를 'src' 가 아니라 'resources' 디렉토리 하위에 위치시켜서 해보라는 이야기가 있어서 그대로 했더니 아무일 없단듯이 문제없이 작동이 되었다.



PS.
블로그 작성을 위해 테스트 시 src 디렉토리 하위에 'META-INF/MANIFEST.MF' 파일이 있는 경우에는 빌드 시 해당 파일이 아예 빌드경로에 들어가지도 않고 JAR 파일에 포함이 되지 않았다.
위의 경우는 IntelliJ 가 Maven Template Project 에 있는 'META-INF' 디렉토리를 그대로 복사한 버그로 의심이 된다.


참조: http://stackoverflow.com/questions/20952713/wrong-manifest-mf-in-intellij-idea-created-jar


2016년 1월 30일 토요일

[Jenkins] 빌드&배포 후 톰캣 자동 재실행 방법



Jenkins Version: 1.642



문제

WAR 파일을 이용해서 Tomcat에 자동으로 배포가 되도록 설정 시 두세번 배포가 되면 다음과 같은 문제가 발생하며 정상적으로 작동되지 않았다.
(이런 경우에는 서버에 접속하여 수동으로 톰캣을 재기동 시킬 수 밖에 없었다.)

java.lang.OutOfMemoryError: PermGen space






원인

WAR 배포 시 Tomcat 이 자동으로 압축을 풀고 Container 를 Reload 하게된다.
하지만 기존의 Permanent 영역의 Memory 가 해제되지 않기 때문에 몇번 Container 가 Reload 되면 Permanent Memory 가 모자라서 OOM(OutOfMemory) Error 가 발생이 된다.






해결방법

젠킨스에 쉘 스크립트를 등록하여 배포 후 톰캣 재기동을 하도록 설정을 해준다.


'프로젝트' => '설정' 항목에 가면 아래와 같이 빌드 후 작업을 지정할 수 있는데
'Execute shell' 항목을 선택한다.



'Command' 항목에 아래와 같이 쉘을 등록해 준다.
(경로는 각각의 환경에 맞게 수정해 주어야 한다.)

cp /var/lib/jenkins/jobs/Project_Name/workspace/target/*.war /home/1004lucifer/servers/apache-tomcat/webapps/Project_Name.war
chmod 777 /home/1004lucifer/servers/apache-tomcat/webapps/Project_Name.war

sleep 20

/home/1004lucifer/servers/apache-tomcat/bin/shutdown.sh

sleep 10

sudo su - 1004lucifer /home/1004lucifer/servers/apache-tomcat/bin/startup.sh



위와같이 구성 후 배포 후 무조건 톰캣을 재기동하게 되어있어서 OOM Error 가 발생하지 않도록 구성이 되었다.
(개발서버에 셋팅을 한 것이며 운영중인 서버에 적용하기에는 무리가 있다.)

* 위와같이 셋팅 후 에도 톰캣에서 WAR 파일 Deploy 시 종종 OOM Error 발생하여 PermGen Memory 설정을 조금 늘려주었다.
(그제서야 배포 시 문제가 없었다.)





PS.
작동방식에 대한 설명
(경로는 각각의 환경에 맞게 수정해 주어야 한다.)

- maven 을 사용하여 빌드 시 war 파일이 생성되도록 셋팅이 되어 있다.

- Jenkins 에 Command 를 등록해 놓으면 젠킨스에서 빌드를 수행 시 입력한 command를 /tmp/ 디렉토리에 임시로 파일로 만들어 놓은 후 /bin/sh 로 실행을 시켜버린다.


cp /var/lib/jenkins/jobs/Project_Name/workspace/target/*.war /home/1004lucifer/servers/apache-tomcat/webapps/Project_Name.war
chmod 777 /home/1004lucifer/servers/apache-tomcat/webapps/Project_Name.war
# Jenkins 에서 war로 빌드한 것을 Tomcat 의 프로젝트 경로에 복사후 권한을 부여한다.
# (이때 톰캣이 war를 자동으로 Deploy 한다.)

sleep 20
# Tomcat이 Deploy 하는 시간을 기다려준다.

/home/1004lucifer/servers/apache-tomcat/bin/shutdown.sh
# Tomcat 을 종료시킨다.

sleep 10
# Tomcat 을 종료하는 시간을 기다려준다. (사실 이렇게 오래걸리지 않음)

sudo su - 1004lucifer /home/1004lucifer/servers/apache-tomcat/bin/startup.sh
# sudo 명령어를 이용해 Tomcat 을 구동하는 계정으로 Tomcat 을 구동시킨다.
# sudo 로 해당 계정으로 명령어 실행 시 암호입력 안해도 되도록 미리 셋팅해야 한다.(중요)



2016년 1월 29일 금요일

[AngularJS] Cannot set property charset of # which has only a getter 에러




사양: AngularJS v1.4.7


NicePay 연동 시 메뉴얼에 EUC-KR로 form 을 보내줘야 하니 form 전송 전 아래와 같은 코드를 넣어 EUC-KR 로 전송하라고 되어있다.


document.charset = 'euc-kr';






현재 사용하는 Angular 프로젝트에서 해당 코드를 사용 시 아래와 같이 오류가 발생을 했다.




angular.min.js?vt=1453967000870:114
TypeError: Cannot set property charset of #<Document> which has only a getter
    at Object.HttpService.fnPost.success (blablabla.js?vt=1453967000870:37)
    at app-service.js?vt=1453967000870:309
    at angular.min.js?vt=1453967000870:93
    at angular.min.js?vt=1453967000870:126
    at m.$eval (angular.min.js?vt=1453967000870:141)
    at m.$digest (angular.min.js?vt=1453967000870:138)
    at m.scopePrototype.$digest (hint.js:2016)
    at m.$apply (angular.min.js?vt=1453967000870:141)
    at m.scopePrototype.$apply (hint.js:2079)
    at l (angular.min.js?vt=1453967000870:93)


AngularJS 에서 사용하는 document 가 Wrapping 되어있는 객체는 charset 속석에 getter 가 없어서 값을 바꿀 수 없다고 한다.







찾아보니 'accept-charset' 라는 표준 속성이 있었다.


<form method="POST" accept-charset="euc-kr">
<input type="hidden" name="" value="" />
</form>



위의 방법으로 폼을 전송하니 정상적으로 한글이 깨지지 않고 전송되는 것을 확인했다.


2016년 1월 20일 수요일

[SVN][IntelliJ] Warning: not all local changes may be shown due to an error: status request returned nothing for command 이슈




증상

IntelliJ 에서 SVN 사용중 아래와 같은 메시지가 뜨며 정상적으로 커밋이 되지 않았다.





Warning: not all local changes may be shown due to an error: status request returned nothing for command: C:\Program Files\TotoiseSVN\bin\svn.exe --config-dir C:\User\1004lucifer\Roaming\Subversion st C:\source\{_PROJECT_}\src\main\webapp\WEB-INF\resources\views --depth immediates --no-ignore --xml






해결방법

메시지대로 CMD(커맨드창) 에서 입력을 시켜준 후 IntelliJ 프로그램을 다시 구동시켜주면 정상적으로 사용이 가능하다.


Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

C:\Users\1004lucifer>"C:\Program Files\TotoiseSVN\bin\svn.exe" --config-dir C:\User\1004lucifer\Roaming\Subversion st C:\source\{_PROJECT_}\src\main\webapp\WEB-INF\resources\views --depth immediates --no-ignore --xml




PS.
별다른 조치 없이 그냥 윈도우를 재부팅 했을 시에도 해결이 되었던 것으로 기억한다.


2016년 1월 18일 월요일

[Jenkins] TomcatManagerException: FAIL - Deployed application at context path 문제



OS: Ubuntu 14.04
Jenkins version: 1.642


어느순간부터 다음과 같은 오류가 발생하며 빌드가 정상적으로 되지 않는 증상이 발생했다.


증상

프로젝트의 빌드 구성을 다음과 같은 순서로 변경을 했었다.
1. 하나의 Tomcat 에 빌드 및 배포
2. 두개의 Tomcat 에 빌드 및 배포 (Tomcat 로드밸런싱)
3. 하나의 Tomcat 에 빌드 및 배포 (다시 1번의 상태로 되돌림)
3번의 설정을 하고나서부터 갑자기 빌드가 되지 않았던 것으로 기억한다.



Log (Console Output)


Started by user admin
Building in workspace /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace
Updating svn://127.0.0.1/repo/{_PROJECT_NAME_} at revision '2016-01-12T18:59:37.290 +0900'
At revision 138
no change for svn://127.0.0.1/repo/{_PROJECT_NAME_} since the previous build
Parsing POMs
[workspace] $ /usr/lib/jvm/jdk1.7.0_79/bin/java -cp /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven31-agent-1.5.jar:/usr/lib/mvn/apache-maven-3.3.9/boot/plexus-classworlds-2.5.2.jar:/usr/lib/mvn/apache-maven-3.3.9/conf/logging jenkins.maven3.agent.Maven31Main /usr/lib/mvn/apache-maven-3.3.9 /var/cache/jenkins/war/WEB-INF/lib/remoting-2.53.2.jar /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven31-interceptor-1.5.jar /var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.5.jar 47861
<===[JENKINS REMOTING CAPACITY]===>channel started
Executing Maven:  -B -f /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/pom.xml install
[INFO] Scanning for projects...
[WARNING] 
[WARNING] Some problems were encountered while building the effective model for org.{_PROJECT_}:ms:war:0.0.1-SNAPSHOT
[WARNING] 'dependencies.dependency.systemPath' for oracle:oracle:jar should not point at files within the project directory, ${project.basedir}/src/main/webapp/WEB-INF/lib/ojdbc14-10.2.0.4.0.jar will be unresolvable by dependent projects @ line 159, column 16
[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: commons-io:commons-io:jar -> duplicate declaration of version 2.4 @ line 293, column 15
[WARNING] 'dependencies.dependency.systemPath' for com.oracle:ojdbc14:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/ojdbc14-10.2.0.4.0.jar will be unresolvable by dependent projects @ line 345, column 16
[WARNING] 'dependencies.dependency.systemPath' for com.nice:NiceID:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/NiceID.jar will be unresolvable by dependent projects @ line 354, column 16
[WARNING] 'dependencies.dependency.systemPath' for com.ipin:client:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/IPINClient.jar will be unresolvable by dependent projects @ line 363, column 16
[WARNING] 'dependencies.dependency.systemPath' for nicepay:nicepay_tx:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/nicepay_tx-0.9.8.15.jar will be unresolvable by dependent projects @ line 372, column 16
[WARNING] 'dependencies.dependency.systemPath' for nicepay:nicepay_lite:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/nicepay-lite-0.9.19.jar will be unresolvable by dependent projects @ line 379, column 16
[WARNING] 'dependencies.dependency.systemPath' for com.tagfree.util:tagfree_mime:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/tagfree_mime_v7.jar will be unresolvable by dependent projects @ line 399, column 16
[WARNING] 'dependencies.dependency.systemPath' for tidy:tidy:jar should not point at files within the project directory, ${basedir}/src/main/webapp/WEB-INF/lib/tidy.jar will be unresolvable by dependent projects @ line 407, column 16
[WARNING] 
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING] 
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING] 
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building ms 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ ms ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 91 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ ms ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ ms ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ ms ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ ms ---
[INFO] No tests to run.
[JENKINS] Recording test results
[INFO] 
[INFO] --- maven-war-plugin:2.2:war (default-war) @ ms ---
[INFO] Packaging webapp
[INFO] Assembling webapp [ms] in [/var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [/var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/src/main/webapp]
[INFO] Webapp assembled in [355 msecs]
[INFO] Building war: /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT.war
[INFO] WEB-INF/web.xml already added, skipping
[INFO] 
[INFO] --- maven-install-plugin:2.4:install (default-install) @ ms ---
[INFO] Installing /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT.war to /var/lib/jenkins/.m2/repository/org/{_PROJECT_}/ms/0.0.1-SNAPSHOT/ms-0.0.1-SNAPSHOT.war
[INFO] Installing /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/pom.xml to /var/lib/jenkins/.m2/repository/org/{_PROJECT_}/ms/0.0.1-SNAPSHOT/ms-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.575 s
[INFO] Finished at: 2016-01-12T18:59:45+09:00
[INFO] Final Memory: 16M/478M
[INFO] ------------------------------------------------------------------------
[JENKINS] Archiving /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/pom.xml to org.{_PROJECT_}/ms/0.0.1-SNAPSHOT/ms-0.0.1-SNAPSHOT.pom
[JENKINS] Archiving /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT.war to org.{_PROJECT_}/ms/0.0.1-SNAPSHOT/ms-0.0.1-SNAPSHOT.war
channel stopped
Deploying /var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT.war to container Tomcat 7.x Remote
  Redeploying [/var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT.war]
  Undeploying [/var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT.war]
  Deploying [/var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT.war]
ERROR: Build step failed with exception
org.codehaus.cargo.container.ContainerException: Failed to deploy [/var/lib/jenkins/jobs/{_PROJECT_NAME_}/workspace/target/ms-0.0.1-SNAPSHOT.war]
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:107)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:185)
at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
at hudson.FilePath.act(FilePath.java:990)
at hudson.FilePath.act(FilePath.java:968)
at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1037)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668)
at hudson.model.Run.execute(Run.java:1763)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:529)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
Caused by: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Deployed application at context path /{_PROJECT_NAME_} but context failed to start

at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:566)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:611)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:291)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:102)
... 17 more
org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: FAIL - Deployed application at context path /{_PROJECT_NAME_} but context failed to start

at org.codehaus.cargo.container.tomcat.internal.TomcatManager.invoke(TomcatManager.java:566)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deployImpl(TomcatManager.java:611)
at org.codehaus.cargo.container.tomcat.internal.TomcatManager.deploy(TomcatManager.java:291)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.deploy(AbstractTomcatManagerDeployer.java:102)
at org.codehaus.cargo.container.tomcat.internal.AbstractTomcatManagerDeployer.redeploy(AbstractTomcatManagerDeployer.java:185)
at hudson.plugins.deploy.CargoContainerAdapter.deploy(CargoContainerAdapter.java:73)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:116)
at hudson.plugins.deploy.CargoContainerAdapter$1.invoke(CargoContainerAdapter.java:103)
at hudson.FilePath.act(FilePath.java:990)
at hudson.FilePath.act(FilePath.java:968)
at hudson.plugins.deploy.CargoContainerAdapter.redeploy(CargoContainerAdapter.java:103)
at hudson.plugins.deploy.DeployPublisher.perform(DeployPublisher.java:61)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723)
at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.post2(MavenModuleSetBuild.java:1037)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668)
at hudson.model.Run.execute(Run.java:1763)
at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:529)
at hudson.model.ResourceController.execute(ResourceController.java:98)
at hudson.model.Executor.run(Executor.java:410)
Build step 'Deploy war/ear to a container' marked build as failure
Finished: FAILURE






인터넷을 찾아보았지만 해결할 수 있는 글은 없었다.


문제

그나마 Jenkins Issue 에 올라온 글(Link)을보고 여러개의 서버에 war 배포시 문제가 발생 할 수 있다는 이슈로 인해 다음과 같이 작업을 했다.



해결
1004lucifer
1. Jenkins 에 등록된 프로젝트의 설정을 따로 기록한뒤 프로젝트 삭제
2. Jenkins 에 새로운 프로젝트를 등록 후 기존의 설정과 동일하게 입력



PS.
거짓말처럼 동일한 설정인데도 증상이 사라지고 문제없이 빌드가 되었다.
동료에게 말을하니 내부적으로 설정이 꼬여서 그러는 경우가 있을 수 있다는 답변을 받았다.


참조: https://issues.jenkins-ci.org/browse/JENKINS-14949


2016년 1월 12일 화요일

[JAVASCRIPT] 자바스크립트를 이용해 문자열 BASE64 인코딩/디코딩 하기



자바스크립트를 이용해 문자열을 BASE64로 인코딩/디코딩 방법

Mozilla 의 설명에도 있듯이 브라우저에 이미 구현되어 있는 기능을 이용한다.
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding


인코딩 (Encoding)

window.btoa( '1004lucifer' );   // MTAwNGx1Y2lmZXI=

window.btoa( encodeURIComponent( '한글' ) );   // JUVEJTk1JTlDJUVBJUI4JTgw


디코딩 (Decoding)
window.atob( 'MTAwNGx1Y2lmZXI=' )   // 1004lucifer

decodeURIComponent( window.atob ( 'JUVEJTk1JTlDJUVBJUI4JTgw' ) )   // 한글




브라우저 호환성은 다음과 같다.
Chrome: 가능
Safari: 가능
Opera: 가능
FireFox: 1.0 이상
IE: 10 이상



자바스크립트로 BASE64 구현한 코드는 아래의 링크에 있다.
https://github.com/beatgammit/base64-js/blob/master/lib/b64.js


키워드: javascript, 자바스크립트, 인코딩, base64


2016년 1월 10일 일요일

[공유기] ipTIME 공유기 전원어댑터 분실 시 대체 어댑터 찾기



ipTIME 공유기 어댑터를 분실 시 대체할 수 있는 어댑터를 찾아보자.

이사를 하며 ipTIME 공유기의 어댑터를 분실하고 집에 대체할 수 있는 어댑터가 없을까 찾아봤는데..
공유기와 전압이 맞지 않아서 사용하지 못하고 한달넘게 공유기를 사용 못하고 있었는데..

아래와 같은 글을 보았다.
[ipTIME 장비의 아답터 고장시 대처법 - by yray]
(결론은 전압이 어느정도 높아도 사용이 가능하다는 이야기다.
공유기에 들어간 부품에 따라서 달라진 수 있지만 너무 심하게 차이나지 않으면 괜찮다고 판단하여 칩셋을 따로 확인하지 않고 바로 실행에 옮겼다.)





현재 내가 사용하는 공유기 모델명은 ipTIME G104 이다.






뒤에 어댑터를 꼽는 부분을 확인해보면 7.5V 라고 쓰여있다.






해당 공유기에 꼽아서 사용하는 어댑터는 사진과 같다. [12V / 1A]
(원래 AA건전지 충전기에서 사용하던 어댑터이다.)

다행히 큰 문제 없이 잘 쓰고 있다.






======================
2016.01.21 업데이트

다운로드 속도가 느려서 속도측정을 해보니 아래와 같았다.
다운로드: 25.58Mbps (3.2MB)
업로드: 22.17Mbps (2.7MB)


56Mbps 까지 지원되는 공유기&노트북인데..
실제로는 속도가 반밖에 나오지 않았다.

인터넷에 어댑터 변경으로 속도 향상이 되었다는 말도 있던데 크게 불편하지도 않고 다른 와이파이 간섭으로 인해 그럴 수도 있다고 판단이 되어 그냥 쓰기로 했다.