위와 같은 에러가 나오면서 maven 에서 mvn install 을 통해서 생성한 jar 파일이 실행이 안되는 경우가 있습니다.
이경우에는 실행가능한 jar를 생성할때 실행할 mainClass 를 지정하지 않아서 생기는 문제입니다.

실행가능한 JAR 를 만드는데 아래와 같은 단계를 추천합니다.

1. JAR 의 MAINFEST.MF 파일에서 main 클래스를 정의합니다. (MAINFEST.MF 파일을 Maven에서 애플래케이션을 패키징할때 생성되는 파일입니다.)
2. 프로젝트에 종속된 모든 라이브러리를 찾습니다.
3. 애플리케이션에서 해당 라이브러리를 참조할수 있도록 MAINFEST.MF 파일에 포함시킵니다.

위의 작업을 수동으로 직접할 수 도 있지만 maven-jar-plugin 과 maven-dependency-plugin 이라는 maven 플러그인을 사용하여 효율적으로 수행할 수 있습니다.

maven-jar-plugin
pom.xml 파일의 <build></build> 안에 아래내용을 추가합니다.



mainClass 에 실행할 메인클래스를 지정합니다.

maven-dependency-plugin

pom.xml 파일의 <build></build> 안에 아래내용을 추가합니다.


위와 같이 내용을 추가하였으면 다시 jar를 만들고 실행해 보면 실행이 될겁니다.

참조 :
https://www.ibm.com/developerworks/kr/library/j-5things13/
Posted by 빨강토끼
,
IBM AIX 서버에서 긴파일네임이나 경로의 압축화일이 잘 풀리지 않아서
(경로나 파일명이 잘림) 문제일 경우가 있습니다.

 http://www.perzl.org/aix/ 에서 tar 를 다운받아서
 rpm -Uvh tar-1.14-2.aix5.1.ppc.rpm 라는 명령으로
설치는 하면
/opt/freeware 에 설치가 됩니다.
/opt/freeware/bin/tar -xvf apache-xxxbin.tar 라는 식의 명령으로 사용할 수 있습니다.
Posted by 빨강토끼
,
1. ESB(Enterprise Service Bus)의 개요
가. ESB (Enterprise Service Bus)의 정의(다양한 정의가 가능합니다.)
ESB(Enterprise Service Bus)는 웹서비스(Web Service), 인텔리전스 라우팅(Intelligent routing), 트랜스포메이션(Transformation) 기술을 기반으로 SOA(Service Oriented Architecture)를 지원하는 미들웨어 플랫폼이다.
- ESB = EAI (Enterprise Application Integration) + 표준화 + 분산화
- 비즈니스 내에서 서비스, 애플리케이션, 자원을 연결하고 통합하는 미들웨어 또는 인프라 
- 비즈니스 단위들의 통합을 수월하게 하면서 이종의 플랫폼과 환경들을 잇는 가교 역할을 하는 인프라 
- 느슨하게 결합되었거나 결합되지 않은 구성 요소들 간에 중재적인 관계와 직접 통신을 지원하는 웹서비스가 가능한 인프라 : Gartner Group
- ESB란 표시는 그 제품이 MOM과 웹서비스 프로토콜 모두를 지원하는 일종의 통합 미들웨어 제품
- 표준 기반 통합 백본, 통합 메시징, 웹서비스, 변환, 그리고 인텔리전트 라우팅 : Sonic Software
- 통신과 연결, 변환, 보안을 위한 표준화된 인터페이스를 구현하는 엔터프라이즈 플랫폼
- 쉽게 말해 웹스피어 MQ와 그 밖의 다른 웹스피어 브로커 그리고 통합 서버를 가지고 있다면 당신은 ESB를 가지고 있는것 : Bob sutor, IBM
- ESB는 벤더의 독자 기술을 판매하기 위한 일종의 마케팅 전술 : 채펠 앤 어소시에이트 CEO
나. ESB (Enterprise Service Bus)가 주목 받은 이유
- EAI에서 Hub and Spoke 통합방식의 한계점 발견
- SOA의 핵심 필요 기능으로 중요성 증대

 특징 전통적인 EAI  ESB 
 통합의 종류 어플리케이션 통합  서비스 통합, 서비스 호스팅 
 통합 방안 시스템별 어댑터 사용으로 복잡성 증가  표준 기술 사용한 단순 통합 
 표준 벤터별 전송기술 상이  개방형 표준(웹서비스) 
 통합형태 단단한 결합(Static. 1:1 결합)  느슨한 결합(Dynamic, 1:N 결합) 
 비용 통합대상 시스템별 어댑터 구입 또는 개발로 지속적 비용 발생  동일 표준 기반이므로 추가 개발비용 절감, 비즈니스 로직 재사용을 통합 비용 절감 
 구현 아키텍처 집중형 (Hub & Spoke)  분산형 (Distributed) 

2. ESB(Enterprise Service Bus)의 중요성 및 개념도
가. ESB(Enterprise Service Bus)의 중요성
- 분산된 서비스 컴포넌트를 쉽게 통합 연동할 수 있어 신뢰성 있는 메시지 통신이 가능
- 각 레거시 시스템과의 연동을 위한 다양한 표준 프로토콜의 지원을 기본으로, 재사용 가능한 컴포넌트들을 조립함으로써 서비스 지향적인 기업 환경을 만들 수 있는 기반 제공
나. ESB(Enterprise Service Bus)의 개념도


3. ESB의 특징 및 구성 요소
가. ESB의 특징
- 다양한 시스템과 연동하기 위한 멀치 프로토콜 지원
- 느슨한 결합(loosely coupled)
- 소프트웨어 컴포넌트를 조합하여 서비스를 조립하는 BPM 지원
- 이벤트 지향적, 표준 지향적
나. ESB의 구성요소
1) 어댑터 형태의 레거시 연동 컴포넌트
-  ESB는 기본적으로 다양한 표준 프로토콜을 어댑터형태로 지원해야 한다.
- 통합 개발 환경에서 플러거블(Pluggable)할 수 있도록 간단한 형태여야 한다.
2) 메시지의 변환, 가공
- 데이터 포맷과 형태 등을 통합 개발 환경 등을 통해 자유롭게 변화하고 가공한다.
3) BPM
- 다양한 시스템의 데이터와 애플리케이션과의 연동을 통해 하나의 서비스를 이용한다.
4) 컨트롤과 모니터링
- 여러과정들은 통합적인 조작과 모니터링이 가능해야 한다. 
- 모니터링의 대상 : 어댑터 단에서의 진행되고 있는 프로세스의 상태 및 데이터 값
5) 통합개발환경
- 통합개발환경은 ESB에서 필요한 요소 중 하나이다. 

ESB의 특징 참고
http://jin11010.blog.me/24517450

SOA를 실현하는 ESB 

ESB 의 이해와 기술 동향
http://blog.daum.net/comoffi/8516983 

Apache serviceMix 분석
http://www.dbguide.net/knowledge.db?cmd=view&boardUid=126051&boardConfigUid=19&boardStep=&categoryUid=574

Apache synapse 분석

http://www.dbguide.net/knowledge.db?cmd=view&boardUid=126062&boardConfigUid=19&boardStep=&categoryUid=574  


Posted by 빨강토끼
,
ActiveMQ in Action 이라는 책의 예제소스를 실행중에 챕터4에 보시면 brokerB 를 실행하는 단계가 있습니다.
그런데 책에 나와있는 주소나 사이트에서 다운받은 소스로는 윈도우환경에서 아래와 같이 에러가 나며 실행이 안됩니다.

C:\apache-activemq-5.4.1>bin\activemq \ 

xbean:file:C:/amq-in-action-example-src/src/main/resources/org/apache/activemq/book/ch4/brokerB.xml

Java Runtime: Sun Microsystems Inc. 1.6.0_21 C:\Program Files\Java\jdk1.6.0_21\jre
Heap sizes: current=15872k free=14606k max=506816k
JVM args: -Dcom.sun.management.jmxremote -Xmx512M -Dorg.apache.activemq.UseDedicatedTaskRunner=true -Djava.util.logging.config.file=logging.properties -Dactivemq.classpath=C:\apache-activemq-5.4.1\bin\../conf;C:\apache-
activemq-5.4.1\bin\../conf; -Dactivemq.home=C:\apache-activemq-5.4.1\bin\.. -Dactivemq.base=C:\apache-activemq-5.4.1\bin\..
ACTIVEMQ_HOME: C:\apache-activemq-5.4.1\bin\..
ACTIVEMQ_BASE: C:\apache-activemq-5.4.1\bin\..
Loading message broker from: xbean:file:C:/amq-in-action-example-src/src/main/resources/org/apache/activemq/book/ch4/brokerB.xml
ERROR: java.lang.RuntimeException: Failed to execute start task. Reason: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 12 in XML document from URL [file:C:/amq-in-action-example-src/src/main/re
sources/org/apache/activemq/book/ch4/brokerB.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'broker'.

java.lang.RuntimeException: Failed to execute start task. Reason: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 12 in XML document from URL [file:C:/amq-in-action-example-src/src/main/resources
/org/apache/activemq/book/ch4/brokerB.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'broker'.


The line that it is complaining about is Line12:

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="BrokerB" dataDirectory="${activemq.base}/data"> 


 이유는 brokerB.XML 파일이 잘못되서입니다.
http://code.google.com/p/activemq-in-action/downloads/list  에서 문제가 수정된 가장최신의 소스를 다운받으실수 있습니다. 

 
Posted by 빨강토끼
,
history : 이전에 입력한 명령들을 보여줍니다.
!! :  이전명령을 다시 실행합니다.
!n : n번째 행의 명령을 실행합니다.
!-n : n번째 이전의 명령을 실행합니다.
!문자열 : 문자열로 시작하는 가장최근 명령을 실행합니다.
!?문자열? : 문자열을 포한하는 가장 최근 명령을 실행합니다.

 
Posted by 빨강토끼
,

Maven으로 PMD check 중에
[WARNING] Error while parsing xx/xx.java: Can't use generics unless running in JDK 1.5 mode!
라는 메시지가 떠서 구글을 검색해봤는데

<properties> 

   <targetJdk>1.6</targetJdk> 
</properties> 


이것을 추가 하라고 나옵니다.
Posted by 빨강토끼
,
리눅스에서 jenkins 를 사용하고 있는데
Jenkins의 새버젼이 나왔다고해서 업데이트를 하려고 하는데 하는 방법을 몰라 인터넷을 찾아보니 보이지 않았다.
사실알고보니 처음에 jenkins.war 가 있던 곳(java -jar jenkins.war)에 새로운 jenkins를 복사하면됩니다.
.
.
.
Posted by 빨강토끼
,

메일설정(gmail)
SMTP server : smtp.gmail.com
Default user e-mail suffix : 비움
System Admin E-mail Address : gmail address

(체크) use SMTP Authentication
User Name : gmail address(전체주소)
Passwork : 비밀번호
Use SSL : 체크
SMTP Port : 465
Charset : UTF-8

Posted by 빨강토끼
,
redmine 을 사용시 작업에 관한 사항들을 이메일로 전달하고 싶은데 따로 smtp 서버를 구축하기가 번거롭다면
gmail 을 사용하는 것을 고려해볼수 있습니다.
게다가 요즘에는 회사에서도 google app 을 많이들 사용하는 추세이므로 매력적인 선택이 될수있겠습니다.

먼저 plugin 을 설치해야됩니다.
아래명령을 실행하거나
ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git

혹은 아래 주소로 가서 소스를 다운받아 redmine설치경로/vendor/plugins/action_mailer_optional_tls 에 압축을 풀면 됩니다.
http://github.com/collectiveidea/action_mailer_optional_tls

그런후 redmine설치경로/apps/redmine/config/ 에 있는
email.yml.example 를 email.yml 으로 하나 복사합니다.
cp email.yml.example email.yml

그런다음 email.yml 을 아래와 같이 수정합니다.
production:
  delivery_method: :smtp
  smtp_settings
:
    tls: true
    enable_starttls_auto: true
    address: "smtp.gmail.com"
    port: '587'
    domain: "smtp.gmail.com"
    authentication
: :plain
    user_name: "your_email@gmail.com"
    password
: "your_password"



Posted by 빨강토끼
,
SEED는 정보통신 및 정보보호의 비밀성 서비스를 제공하기 위하여 한국정보보호 진흥원이 주관이 되어 1998년 개발, 공개하여 한국 표준 암호 방식으로 선정한 128비트 블록 암호 방식입니다. SEED는 암호 방식의 입력으로 평문 128비트와 암호화 키 128비트가 입력되어 128비트의 암호문을 출력합니다.

일단 SEED 관련 소스나 정보를 얻기 위해서 한국정보보호진흥원(http://www.kisa.or.kr)에 접속하여 소스를 신청(http://seed.kisa.or.kr/kor/seed/request01.jsp) 하실수 있습니다.

신청을 하게되면 신청이메일주소로 소스가 오게 됩니다.

압축을 풀면 소스코드 메뉴얼과 소스들이 나옵니다.
그대로 사용하시면 되는데

문제는 CBC 가 아닌가합니다. 인터넷에도 소스도 별로 없고 이론적 설명뿐이고 실제 개발과정에서 참고 할만할게 별로 없었습니다. 이것은 의외로 구글링을 통한 외국사이트도 마찮가지였습니다.

일단 CBC의 알고리즘과 기본이론은 지겹도록 봐서 알겁니다.
(솔찍히 저역시 처음엔 그것만 아무리봐도 이해가잘 안되는부분이 많았습니다. 소스코드는 어디에 있는지....ㅜㅜ)

CBC 모드 암호화 의사코드

어쩌라고......

일단 내용은 이렇습니다.(긴말 필요없다 . 당장 소스코드를 내놓아라~!)
먼저 비밀키를 가지고 라운드키를 생성합니다.
SeedRoundKey(dwRoundKey, (BYTE *)cKeyValue) 함수입니다.
P는 원문이고 C는 암호화된문입니다.(P1,P2 ....과 C1,C2 등은 각블럭들....)
일단 버퍼에서 SEEDBLOCKSIZE(16) 만큼을 가져와서(P1) 그전 암호화된 C블럭과
(^) 연산을 하게 됩니다. 처음엔 InitVecter 값이 들어가게 됩니다.
그래서 나온 I블록(inputBlock)을 SEED 로 암호화합니다.
SeedEncrypt(inputBlock, dwRoundKey) 함수입니다.

그래서 나온 O 블록을 C에 차곡차곡 쌓으면 됩니다.(C1,C2,C3.........)

CBC 모드 복호화 의사코드


이번엔 복호화 입니다.
일단 라운드키 생성을 먼저 하시고,
암호화된 C블럭(암호화된)을 복호화합니다.
SeedDecrypt(inputBlock, dwRoundKey) 함수입니다.
그렇게 해서 나온 O블럭을 그전 C블럭(처음엔 InitVecter)과 (^) 연산합니다.
그결과 값이바로 P블럭(원문)입니다.

이제 기다리시던 소스를 공개하겠습니다. 원래알고리즘과 다소 다른부분이 있습니다.
소스에는 pkcs5 이슈도 포함되어있지만 설명은 생략하겠습니다.




마지막으로 운영체제가 64bit일경우 KISA의 소스 그대로 사용하시면
라운드키가 매번 다르게 생성되는 것을 발견할수있습니다.
이유는
SEED_KISA.h 의 내용중
/******************************* Type Definitions *****************************/

// If your machine uses different data types, you must change them to proper ones.
#ifndef TYPE_DEFINITION
    #define TYPE_DEFINITION
    #if defined(__alpha)
        typedef unsigned int        DWORD;        // unsigned 4-byte data type
        typedef unsigned short      WORD;        // unsigned 2-byte data type
       
    #else
        typedef unsigned long int   DWORD;        // unsigned 4-byte data type
        typedef unsigned short int  WORD;        // unsigned 2-byte data type
    #endif
    typedef unsigned char           BYTE;        // unsigned 1-byte data type
#endif

구문이 있는데 64bit 에서는 자료형 크기가 달라 생기는 현상입니다.
운영체제나 상황에 따라 여러가지 해결방법이 있는데 저는
typedef int32_t        DWORD;        // unsigned 4-byte data type
typedef int16_t     WORD;        // unsigned 2-byte data type
이렇게 수정하여 해결하였습니다.
단...이것은 여러가지 환경에 따라 달라질수있기때문에 여러분이 직접 각 자료형을 대입해보고
선택해야됩니다.

Posted by 빨강토끼
,