본문 바로가기
IT/Middleware

Jboss eap 7.4 설정 (JNDI, Deploy)

by someday.. 2022. 11. 24.
반응형
개요

Jboss eap 7.4 를 사용하면서 설정했던 내용에 대해 기록합니다.

  • Application deploy
  • JNDI

 

jboss eap 7.4 Application deploy 방법

관리콘솔 보다는 코드로 수정하는 방법이 편합니다. 코드로 적용하는 방법에 대해 설명합니다.

 

%JBOSS_HOME%\standalone\configuration\standalone.xml

해당 standalone.xml 파일의 가장 아랫부분에 추가할 Application 을 설정 합니다.

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
        <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/>
        <socket-binding name="http" port="${jboss.http.port:8080}"/>
        <socket-binding name="https" port="${jboss.https.port:8443}"/>
        <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>
        <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/>
        <socket-binding name="txn-recovery-environment" port="4712"/>
        <socket-binding name="txn-status-manager" port="4713"/>
        <outbound-socket-binding name="mail-smtp">
            <remote-destination host="${jboss.mail.server.host:localhost}" port="${jboss.mail.server.port:25}"/>
        </outbound-socket-binding>
    </socket-binding-group>
	
	<!-- 여기 코드 수정 -->
    <deployments>
        <deployment name="test.war" runtime-name="test.war">
            <fs-exploded path="D:\RunTimeServer\jboss-eap-7.4\standalone\deployments\test.war"/>
        </deployment>
    </deployments>

application 이름뒤에 .war 문자를 추가하면 됩니다.

그뒤 path 에 application 이 있는 폴더를 지정해주시면 됩니다. 아래와 같은 폴더 구조로 되겠죠!

 

해당 설정 후 jboss 기동하면 정상적으로 deploy 됨을 확인 할 수 있습니다.

추가로, context root 를 변경하고 싶은 경우 (예 : http://localhost:8080/test -> http://localhost:8080/console )

WEB-INF 폴더에 아래 내용의 파일을 추가해주시면 됩니다.

WEB-INF\jboss-web.xml

<!DOCTYPE jboss-web PUBLIC
   "-//JBoss//DTD Web Application 5.0//EN"
   "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd">
   
<jboss-web> 
    <context-root>console</context-root> 

</jboss-web>

 

 

jboss eap 7.4 JNDI 설정

 

JNDI 란, 연결하고 싶은 database의 DB pool을 WAS(tomcat, jboss 등..)에서 미리 Naming 설정하여 Application 에서는 해당 Naming 을 통해 DB 접근하도록 하는 java api 다.

사용하는 용도로는 아래와 같다.

  • DB의 서버/계정 정보 보안 (Application 에게는 Naming 정보만 노출되므로 db 정보가 노출되지 않는다.)
  • DB 설정 정보를 파악하기 쉬움
  • DB 커넥션 풀 등의 설정을 효율적으로 사용 가능

본론으로 JNDI 설정 방법을 알아봅시다.

 

%JBOSS_HOME%\standalone\configuration\standalone.xml

<subsystem xmlns="urn:jboss:domain:datasources:6.0">
	<datasources>
        <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
            <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
            <driver>h2</driver>
            <security>
                <user-name>sa</user-name>
                <password>sa</password>
            </security>
        </datasource>
				
        <!-- Oracle JNDI datasource START -->
        <datasource jndi-name="java:jboss/datasources/OracleDS" pool-name="OracleDS" enabled="true">
         <connection-url>jdbc:oracle:thin:@localhost:1521:orcl1</connection-url>
          <driver>oracle</driver>
          <pool>
           <min-pool-size>1</min-pool-size>
           <max-pool-size>5</max-pool-size>
           <prefill>true</prefill>
          </pool>
          <security>
           <user-name>c##test</user-name>
           <password>test</password>
          </security>
        </datasource>
      <!-- Oracle JNDI datasource END -->
        <drivers>
            <driver name="h2" module="com.h2database.h2">
                <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
            </driver>
            <!-- Oracle JNDI driver START -->
            <driver name="oracle" module="com.oracle">
                <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
            </driver>				
            <!-- Oracle JNDI driver END -->
        </drivers>
    </datasources>
</subsystem>

주석된 "Oracle JNDI" 내용을 추가하시면 됩니다.

 

이후 oracle 연결을 위한 라이브러리를 추가해주도록 합시다.

 

위치 : %JBOSS_HOME%\modules\system\layers\base\com\oracle\main

(해당 경로가 없을 경우 생성해줘야 합니다. 일반적으로는 base\com 까지는 있으나 그 뒤 폴더는 만들어줘야함.)

 

해당 폴더에 아래 내용으로 module.xml 파일을 생성합시다.

%JBOSS_HOME%\modules\system\layers\base\com\oracle\main\module.xml

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

<module xmlns="urn:jboss:module:1.5" name="com.oracle">
  <resources>
  	<resource-root path="ojdbc8.jar" />
  </resources>
  <dependencies>
    <module name="javax.api"/>
    <module name="javax.transaction.api"/>
  </dependencies>
</module>

추가로 동일한 위치에 라이브러리를 복사해줍시다.

저의 경우 oracle 19c 를 사용하므로 ojdbc8.jar 를 복사했습니다.

oracle 버전별 사용 라이브러리

 

이후 jboss 실행 시 정상적으로 JNDI가 연결됨을 확인 할 수 있습니다.

 

반응형

댓글