2014년 5월 21일 수요일
JBoss EAP 6.0 (jBoss Application Server 7.0)에서 오라클 DataSource 설정하기
** 참고: https://community.jboss.org/thread/169104
1. 오라클 JDBC 드라이버(ojdbc6.jar) 다운로드
http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html
2. jBoss Oracle JDBC 모듈 추가
ojdbc6.jar 파일을 ${JBOSS_HOME}/modules/com/oracle/ojdbc6/main 디렉토리에 복사
위 디렉토리에 module.xml 파일을 생성하고 아래 내용으로 저장
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle.ojdbc6">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
<dependencies>
<module name="javax.api" />
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
3. DataSource 설정
${JBOSS_HOME}/standalone/configuration/standalone.xml에 DataSource 정보 추가
<datasources>
...
<datasource jndi-name="java:/TestDS" pool-name="TestDS" enabled="true">
<connection-url>jdbc:oracle:thin:@192.168.0.1:ORCL</connection-url>
<driver>oracle</driver>
<security>
<user-name>scott</user-name>
<password>tiger</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
</validation>
</datasource>
<drivers>
...
<driver name="oracle" module="com.oracle.ojdbc6">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
라벨:
datasource,
jboss,
oracle
Define multiple JBoss 7 instance using Eclipse Juno
참조 : https://community.jboss.org/thread/221012
* Instance 파일 복사
${JBOSS_HOME}/standalone 디렉토리를 ${JBOSS_HOME}/foo 로 복사
* ${JBOSS_HOME}/foo/configuration/standalone.xml 수정
before
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
after
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:10000}">
* Eclipse server runtime 추가
Window > Preferences > Server > Runtime Environments > Add
Create a runtime environment "JBoss 7.1 Runtime foo"
Configuration file: ..\..\foo\configuration\standalone.xml
* 새 서버 생성
Server view 에서 New / Server
JBoss Community / JBoss AS 7.1 추가
* Server 정보 수정
Server view 에서 위에서 생성된 서버 double click
Server Ports 에서 Detect from Local Runtime 체크 해제하고 Port offset을 10000으로 설정
Deployment 탭으로 이동해서 아래와 같이 수정
- "Use a custom deploy folder" check
- "standalone/deployments" -> "foo/deployments"
- "standalone/tmp" by "foo/tmp"
* Open launch configuration 수정
Overview 탭으로 이동
Always update arguments related to the runtime : uncheck
- Program arguments 수정
/*******************************************************************************
-mp "C:/tools/jboss/jboss-as-7.1.1.Final/modules" -jaxpmodule javax.xml.jaxp-provider org.jboss.as.standalone -b 0.0.0.0 --server-config=..\..\foo\configuration\standalone.xml
*******************************************************************************/
- VM arguments 수정
/*******************************************************************************
-server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true "-Dorg.jboss.boot.log.file=C:/tools/jboss/jboss-as-7.1.1.Final/foo/log/boot.log" "-Dlogging.configuration=file:/C:/tools/jboss/jboss-as-7.1.1.Final/foo/configuration/logging.properties" "-Djboss.home.dir=C:/tools/jboss/jboss-as-7.1.1.Final" "-Djboss.server.base.dir=C:\tools\jboss\jboss-as-7.1.1.Final\foo"
*******************************************************************************/
수정할 항목: org.jboss.boot.log.file / logging.configuration / jboss.server.base.dir
* 서버 구동 및 확인
Servers view에서 서버를 (재)시작하고 http://localhost:18080 접속 확인
이름 구분자로 String format하기
Apache commons lang의 StrSubstitutor 클래스를 이용한다.
(commons-lang 2.2 부터 지원)
Map valuesMap = new HashMap();
valuesMap.put("animal", "quick brown fox");
valuesMap.put("target", "lazy dog");
String templateString = "The ${animal} jumped over the ${target}.";
StrSubstitutor sub = new StrSubstitutor(valuesMap);
String resolvedString = sub.replace(templateString);
결과(resolvedString) : The quick brown fox jumped over the lazy dog.
http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/index.html?org/apache/commons/lang/StringUtils.html
2014년 5월 16일 금요일
MyBatis(iBatis)에서 파라미터에 Null 값이 있을 경우 에러 처리
MyBatis(iBatis)에서 파라미터에 Null 값이 있을 경우 에러가 발생한다.
아래 2가지 방식으로 설정 가능하다.
1. 전체 설정
jdbcTypeForNull의 기본값은 OTHER 이다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
...
<setting name="jdbcTypeForNull" value="VARCHAR" />
</settings>
<environments>
...
</environments>
<mappers>
<mapper resource="com/..."/>
...
</mappers>
</configuration>
2. 파라미터별 처리(jdbcType를 지정)
Null 값이 입력될 수 있는 부분에 아래와 같이 옵션을 추가한다.
#{id, jdbcType=VARCHAR}
MyBatis(iBatis)에서 Underscore 형식의 필드명을 camel case로 변경하기
MyBatis(iBatis) 설정을 아래와 같이 변경
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
...
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
<environments>
...
</environments>
<mappers>
<mapper resource="com/..."/>
...
</mappers>
</configuration>
2014년 4월 23일 수요일
2014년 4월 22일 화요일
Java web service framework 비교
| Support | Contract | 비고 | |
| Apache AXIS2 | first, last | 가장 많이 사용(기준?) Spring framework 적용가능 |
|
| Apache CXF | JAX-WS JAX-RS SAAJ Web Services Metadata for the Java Platform |
first, last | 가장 널리 사용되고 있는 추세 (AXIS2에서 CXF로 넘어오는 경우가 많음) AXIS2 보다 사용하기 편리 웹서비스 관련 표준들을 준수 (WSDL 2.0은 아직 지원하지 않음) 최소한의 오버해드로 웹서비스 관련 프레임웍 중 성능이 가장 뛰어남(?) Spring framework 적용가능 전자정부 표준 프레임워크에서 사용 |
| Jersey | JAX-RS | ? | |
| Spring-WS | JAX-RS | first | JAX-WS 표준을 완벽히 지원하지 않음 JAX-WS 같은 Spring annotation 지원 개발자가 작성해야할 코드가 가장 작음 |
| RESTEasy | JAX-RS JAXB |
? | JBoss 프로젝트 Rich set of providers for: XML, JSON, YAML, Fastinfoset, Multipart, XOP, Atom, etc. JAXB marshalling into XML, JSON, Jackson, Fastinfoset, and Atom as well as wrappers for maps, arrays, lists, and sets of JAXB Objects. Gzip content-encoding 지원 |
| Restlet | JAX-RS | ? | 경량 REST 프레임워크 Xstream, Jackson을 이용한 XML, JSON marshalling, unmarshalling 지원 FreeMarker, Velocity 통합가능 대용량 멀티파트 데이터 처리를 위해 Apache FileUpload와 통합가능 |
| Spring @MVC | N/A | Spring MVC를 이용해서 RESTful 서비스를 구현 https://spring.io/guides/gs/rest-service/ |
* JAX-WS : Java API for XML-Based Web Services (JAX-WS) 2.0 – JSR-224
* JAX-RS : The Java API for RESTful Web Services – JSR-311
* SAAJ : SOAP with Attachments API for Java (SAAJ) – JSR-67
* JAXB : Java Architecture for XML Binding
피드 구독하기:
글 (Atom)


