본문 바로가기

web application server/JBoss AS 6

JBoss 6 웹 프로젝트 생성, JNDI 설정

JBoss를 이용하여 웹 어플리케이션 프로젝트를 만들어 보자. JBoss에는 jboss-web.xml 이란게 존재한다.

jboss-web.xml 에는 JBoss의 JNDI 설정시에도 쓰이고, JBossSX라는 보안 설정을 할 때도 쓰인다. 그리고 컨텍스트를 바꿀수도 있다.
예를 들면 JBossTest.war 라는 프로젝트는 localhost:8080/JBossTest 로 접근해야 한다.
하지만 jboss-web.xml에  <context-root>/test</context-root> 라고 설정해 준다면 localhost:8080/test 로 가능하다는 것이다.

먼저 이클립스에서 Dynamic Web Project 를 만들었다. 그리고 JNDI 설정을 하기 위해서  jboss-web.xml 을 만들어야 하는데 자동 생성 방법을 모르겠다.(굳이 jboss-web.xml 이 필요 없다면 안만들어도 될 거 같다.) 그래서 %JBOSS_HOME% 에서 jboss-web.xml 파일을 검색하여 복사 + 붙여 넣기를 하였다. 전체적인 구조이다.

이제 JNDI 설정을 해보자. 일단 jdbc.jar이 필요하다. 나는 오라클로 테스트를 하였으므로 ojdbc15.jar 를 사용하였다.
1. %JBOSS_HOME%/server/<server>/lib에 넣는다.
2. Jboss 는 JNDI를 구동시에 %JBOSS_HOME%server/<server>/deploy/ 경로에서 찾는다 파일명은 *-ds.xml 이여야 한다.
   JBoss의 docs/examples/jca/ 경로애 보면 oracle-ds.xml 파일이 있다. 이 파일을 복사하여 수정한다. 
    여기서 데이터베이스 연결 성공 여부를  확인해 보려면 JBoss를 실행시킨 후, jmx-conseol(localhost:8080/jmx-console.xml)     에서 확인이 가능하다.

3. jboss-web.xml 에서 2번의 jndi를 찾아야 한다.
4. web.xml에서 jboss-web.xml의 jndi를 찾는다.

어려우니 그림으로 보자.
위 그림과 같이 동작 한다고 한다.


< 결론 >

아이바티스가 쉽고 많이 쓰이는 것 같다. 나는 아이바티스에서 JNDI 설정을 lookup 해 보았다.(테스트 성공.)
(빨간색 참고)

# oracld-ds.xml 파일 

<?xml version="1.0" encoding="UTF-8"?>

<datasources>

  <local-tx-datasource>

           <jndi-name>OracleDS</jndi-name>

<connectionurl>

jdbc:oracle:thin:@mkk.iptime.org:1521:orcl

</connection-url>

<driver-class>

oracle.jdbc.driver.OracleDriver

</driver-class>

<user-name>scott</user-name>

<password>tiger</password>

 

<min-pool-size>2</min-pool-size>

<max-pool-size>10</max-pool-size>

   

<exception-sorter-class-name>

   org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter

</exception-sorter-class-name>

<metadata>

         <type-mapping>Oracle10g</type-mapping>

</metadata>

</local-tx-datasource>

</datasources>



# jboss-web.xml 파일

<?xml version="1.0" encoding="ISO-8859-1"?>

 

<!DOCTYPE jboss-web PUBLIC

        "-//JBoss//DTD Web Application 2.3V2//EN"

    "http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd">

 

<jboss-web>

<context-root>/default</context-root>

    <resource-ref>

        <res-ref-name>jdbc/OracleDS</res-ref-name>

        <jndi-name>java:/OracleDS</jndi-name>

    </resource-ref>

</jboss-web>



# web.xml 파일

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>JbossTest</display-name>

<resource-ref>

    <res-ref-name>jdbc/OracleDS</res-ref-name>

    <res-type>javax.sql.DataSource</res-type>

    <res-auth>Container</res-auth>

  </resource-ref>

</web-app>



# SqlMapConfig.xml 파일

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Config Map 2.0//EN""http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>

    <settings

            cacheModelsEnabled="true"

            enhancementEnabled="true"

            lazyLoadingEnabled="true"

            maxRequests="40"

            maxSessions="20"

            maxTransactions="6"

            useStatementNamespaces="true"

            />

            

       <transactionManager type="JDBC">

             <dataSource type="JNDI">

                    <property name="DBJndiContext"value="java:comp/env/jdbc/OracleDS"/>

             </dataSource>

       </transactionManager>

 

  <sqlMap resource="org/thinker/database/test.xml" />

 </sqlMapConfig>


# 아이바티스 DAO

public class IBatis {

private static SqlMapClient sqlMap;
static{
try{
Reader reader = Resources.getResourceAsReader("org/thinker/database/sqlMapConfig.xml");
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
}catch (Exception e){
System.out.println(e);
}
}
public void getTest() throws SQLException{
HashMap map = (HashMap) sqlMap.queryForObject("test.sysdate");
System.out.println( "SELECT SYSDATE FROM DUAL : " + map.get("SYSDATE") );
}
}


'web application server > JBoss AS 6' 카테고리의 다른 글

JBoss6 배포(deploy)하기  (0) 2013.01.08
JBoss 시스템 변수  (0) 2013.01.08
JBoss 6 시작 및 종료  (0) 2013.01.08
JBOSS 6 소개  (0) 2013.01.08