2012년 11월 20일 화요일

Eclipse에서 Maven Module 생성


Abstract

Maven으로 개발을 진행할 때 연관 프로젝트를 module로 분할하여 관리하면 버저닝이나 어플리케이션 배포시 여러 이점을 제공하고 프로퍼티나 dependency를 공유할수 있는 장점이 있다.

Step1 - Maven Module 생성




Step 2 - Module 명 지정

parent package와 Module 명을 지정한다.


Step 3 - Archetype 지정

생성할 프로젝트에 적절한 archetype을 지정한다. 아래의 예제는 webapp 목록 중에서 하나를 선택한 것이다.




Step 4 - 모듈 정보 설정

모듈에 대한 버전을 설정한다.


























2012년 11월 7일 수요일

WebService Study를 위한 링크

http://www.albinsblog.com/search/label/Weblogic


http://metro.java.net/guide/ch02.html

http://jaxws-ws.blogspot.kr/

http://frommyworkshop.blogspot.kr/2010/07/configure-apache-cxf-project-to-deploy.html

http://jax-ws.java.net/2.2.6/docs/ch03.html

http://sqltech.cl/doc/oas10gR3/web.1013/b25603/appjaxrpcmapping.htm



http://docs.oracle.com/cd/E12840_01/wls/docs103/webserv_ref/anttasks.html

2012년 10월 18일 목요일

Wireshark로 localhost 패킷 보기

사실 Wireshark로 패킷을 캡처한다기 보다는 rawcap.exe를 통해서 캡처한 파일을 Wireshark로 열어서 본다는 게 더 적절하다.

원문 참조: http://erictummers.wordpress.com/2012/06/23/sniff-localhost/




1. loopback adapter 설치
2. 네트웍 설정에서 IP 설정
3. rawcap 설치
4. rawcap으로 loopback 패킷 캡처
5. 캡처된 파일을 wireshark에서 열기

1. loopback adapter 설치

Windows 시작 버튼을 클릭한 후 팝업되는 창의 좌측 하단에 위치한 입력상자에 "cmd" 라고 입력한 후 검색된 cmd.exe를 마우스 우클릭하여 관리자 권한으로 실행 시킨다.

콘솔 창에서 아래와 같이 입력한다.
> hdwwiz.exe









2. 네트웍 설정에서 IP 설정

보통 loopback driver가 설치되면 "로컬 영역 연결 2", "로컬 영역 연결 3"... 이런 이름으로 추가된다.
네트웍 설정 창에서 아래와 같이 IP 주소를 입력한다.
eg) 10.0.0.10



3. rawcap 설치

아래의 사이트에서 rawcap.exe 파일을 내려 받는다.
http://www.netresec.com/?page=RawCap


4. rawcap으로 loopback 패킷 캡처

아래와 같이 rawcap을 실행시킨다. loopback.cap을 캡처된 파일 명이므로 다른 이름으로 지정해도 무관하다.

D:\tools\rawcap>rawcap.exe 10.0.0.10 loopback.cap

CTRL + C 키를 입력하여 캡처링을 중지한다.

5. 캡처된 파일을 wireshark에서 열기

File > Open 메뉴에서 앞 단계에서 저장된 파일을 선택한다.

wireshark의 Filter에 "tcp"라고 입력한 후 Apply 버튼을 클릭한다.

목록을 마우스 우클릭하여 Follow TCP Stream 메뉴를 클릭한다.
아래와 같이 HTTP를 캡처한 내용이 화면에 출력된다.










2012년 9월 5일 수요일

Oracle Process 개수 설정

Oracle Web Center의 Portal 이나 Content를 설치하게 되면, RCU를 이용해서 스키마를 생성하거나 초기화 해야 한다.

이때 Oracle Database의 parameter 중에서 PROCESS parameter가 200개 이상 되어야 하는데, 보통 기본 값으로 150개로 설정되어 있다.

PROCESS 개수를 변경하고 Database를 재실행한다.

PROCESS 개수 확인

sqlplus를 이용해서 아래와 같이 입력하여 PROCESS 개수를 확인해 보자

SQL> show parameter processes





NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     0
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     1000
log_archive_max_processes            integer     4
processes                            integer     150


SQL>

PROCESS 개수 변경

SQL> alter system set processes=200 scope=spfile ;


Database Shutdown

데이터베이스를 shutdown 시키거나 startup 시킬 때는 아래와 같이 sysdba 권한으로 로그인 해야 한다.

>sqlplus system as sysdba



SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.


Database Startup

SQL> startup


다시 PROCESS 개수가 변경되었음을 확인해보자.


SQL> show parameter processes


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes                      integer     0
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
global_txn_processes                 integer     1
job_queue_processes                  integer     1000
log_archive_max_processes            integer     4
processes                            integer     200


200개로 변경되었으면 다시 RCU를 이용해서 스크마를 생성하면 정상적으로 동작한다.



2012년 7월 18일 수요일

CXF에서 Authorization 헤더 설정하기


CXF에서 HTTP Authorization 헤더에 Basic 방식으로 username, password를 전달할 때 아래와 같이 소스코드를 지정한다.



 org.apache.cxf.jaxws.JaxWsProxyFactoryBean clientFactory = new org.apache.cxf.jaxws.JaxWsProxyFactoryBean(); 
        clientFactory.setAddress("http://localhost:8080/svc-url"); // 서버 주소로 변경해 주세요
        clientFactory.setUsername(USERNAME); // username
        clientFactory.setPassword(PASSWORD); // password



HTTP Authorization 헤더의 Basic 방식인 
"username:password"가 base64 encoding 값으로 전달되는 것으로 확인되었습니다.

인증 정보 설정 후 요청 시 HTTP 요청 헤더 확인해 보시면 Authorization 헤더가 설정되어 있습니다.
 Authorization=[Basic Y2poY29uc3VtZXIxdidkxdxOndlbGNvbWUx]

2012년 3월 23일 금요일

Unable to locate Spring NamespaceHandler

원문: 감사합니다.
http://techieth8s.blogspot.com/2011/04/unable-to-locate-spring.html

오늘, 난 spring-security 관련 에러 때문에 고생하였습니다.
단지 WEB-INF/lib에 관련 library를 추가하고
http://www.springframework.org/schema/security/spring-security-3.1.xsd
를 사용하면 그만입니다.

Error:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/tx] Offending resource: class path resource [applicationContext.xml]
Solution: Add spring-tx.jar to WEB-INF/lib

Error:
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security] Offending resource: class path resource [applicationContext.xml]
Solution: Add spring-core, spring-acl, spring-config, spring-web, spring-taglibs jars to WEB-INF/lib

2012년 3월 14일 수요일

Mysql DataSource Configuration in Jboss7.1.1

원문: https://community.jboss.org/wiki/DataSourceConfigurationInAS7

jboss7.1.1 설치 디렉터리를 ${jboss-dir}로 표기함.

mysql-jdbc: mysql-connector-java-5.1.18.jar

모듈 설치

1. ${jboss-dir}/modules 디렉터리에 com/mysql/main 하위 폴더를 생성한다.
2. ${jboss-dir}/modules/com/mysql/main 에 mysql-connector-java-5.1.18.jar 파일을 복사한다.
3. ${jboss-dir}/modules/com/mysql/main 에 module.xml 파일을 생성하여 아래와 같이 수정한다.



<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.mysql">
    <resources>
        <resource-root path="mysql-connector-java-5.1.18.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
    </dependencies>
</module>








DataSource 설정
${jboss-dir}/standalone/configuation/standalone.xml 파일의 datasource 항목에 아래와 같이 추가한다.


<datasources>
    <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
        <driver>h2</driver>
        <security>
            <user-name>sa</user-name>
            <password>sa</password>
        </security>
    </datasource>
    <datasource jndi-name="java:jboss/datasources/MysqlDS" pool-name="MysqlDS" enabled="true" use-java-context="true">
        <connection-url>jdbc:mysql://localhost:3306/mydb</connection-url>
        <driver>com.mysql</driver>
        <security>
            <user-name>dbuser</user-name>
            <password>dbpasswd</password>
        </security>
    </datasource>
    <drivers>
        <driver name="h2" module="com.h2database.h2">
            <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
        </driver>
        <driver name="com.mysql" module="com.mysql">
            <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
        </driver>
    </drivers>
</datasources>

















2012년 1월 13일 금요일

국내 아이피 IP 대역

한국인터넷진흥원이 국내에 할당한 IP주소 대역은 http://ip.kisa.or.kr 사이트에서 IPv4 → 국내할당현황에서 확인 하실 수 있으며 진흥원이 IP주소 추가 확보 시 실시간 반영 됩니다.

로직은 대충 만들어봐요.

2012년 1월 6일 금요일

엑셀 매크로(VB)와 사랑에 빠지다.

요즘 엑셀 매크로에 관심을 갖게 되어 자주 VB 소스 코드를 훑어보고 있다.
자바에 대한 배신은 아니다. 흠.

http://office.microsoft.com/ko-kr/excel-help/HP010014111.aspx

  1. 개발 도구 탭을 사용할 수 없으면 다음을 실행하여 표시합니다.
    1. Microsoft Office 단추 단추 모양 를 클릭한 다음 Excel 옵션을 클릭합니다.
  1. 기본 설정 범주의 Excel에서 가장 많이 사용하는 옵션에서 리본 메뉴에 개발 도구 탭 표시 확인란을 선택한 다음 확인을 클릭합니다.

첫번 째 샘플
특정 셀들의 값을 이용해서 INSERT 구문을 만든다.


Sub createsql()

Dim startIndex As Integer
Dim endIndex As Integer
Dim sqlColumn As Integer
Dim msgCode As String
Dim trCd As String
Dim description As String


sqlColumn = 7

For intRow = 7 To 494
    msgCode = fixMsgCode(Cells(intRow, 1).Value)
    trCd = Cells(intRow, 2).Value
    description = Cells(intRow, 4).Value
    Cells(intRow, sqlColumn).Value = "insert into U_TR_CODE_MAPPING (MSG_CODE, TR_CD, DESCRIPTION) values ('" & msgCode & "', '" & trCd & "', '" + description + "');"
Next



End Sub

Function fixMsgCode(msgCode As String) As String


Dim msgLen As Integer

msgLen = Len(msgCode)
If msgLen > 8 Then
    fixMsgCode = Right(msgCode, 8)
Else
    fixMsgCode = msgCode
End If

End Function




엑셀 서식 함수
=TEXT(NOW(), "yyyymmdd")  : 현재일을  yyyymmdd 포맷으로 변환