4.Anyframe IAM Admin Install

이번 장에서는 IAM Core가 사용하는 DB 설정을 관리자가 손쉽게 조작 할 수 있도록 하는 Anyframe IAM Admin 설치 절차에 대해서 알아본다.

IAM Admin의 설치 절차는 다음과 같다.

4.1.war 파일 배포

다운로드 받은 Anyframe-iam-1.0.1-bin.zip 파일의 압축을 해제 하면 나오는 anyframe.iam.admin.web-1.0.1.war 파일을 WAS에 배포한다.

WAS 별 배포 방법에 대한 설명은 본 문서 범위를 넘어가므로 생략하였다.

4.2.Configuration

war 파일 배포 후 /WEB-INF/springmvc/remote-invoker-servlet.xml 파일을 열어서 gatherServiceClient, resourceReloadServiceClient Bean의 serverUrl Property 설정 값을 대상 시스템의 url로 설정한다.

serviceUrl property에서 굵은 글씨로 표시된 부분이 수정해야할 대상이다.

<bean id="gatherServiceClient"
    class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">				
    <property name="serviceUrl"
        value="
        http://localhost:8080/anyframe.iam.sample/assist/resourceGatherAssist.do" />
    <property name="serviceInterface"
        value="anyframe.iam.core.assist.IResourceGatherAssistService" />
    <property name="httpInvokerRequestExecutor">		
        <bean class="org.springframework.security.context.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />
    </property>
</bean>

<bean id="resourceReloadServiceClient"
    class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
    <property name="serviceUrl"
        value="
        http://localhost:8080/anyframe.iam.sample/reload/resourceReload.do" />
    <property name="serviceInterface"
        value="anyframe.iam.core.reload.IResourceReloadService" />
    <property name="httpInvokerRequestExecutor">
        <bean class="org.springframework.security.context.httpinvoker.AuthenticationSimpleHttpInvokerRequestExecutor" />
    </property>
</bean>

WebLogic 배포시 유의 사항

Anyframe IAM 의 WAS별 배포시 WebLogic 에서는 Hibernate 와 연관하여 org.hibernate.hql.ast.HqlToken 클래스의 ClassNotFoundException 이 발생한다.

공식적으로 Hibernate 와 WebLogic 간의 antlr 라이브러리의 충돌 문제는 다음 링크과 같이 발표되어 있다.

https://www.hibernate.org/250.html

웹로직에서는 다음과 같이 세가지 방법으로 해당 문제점을 회피할 수 있다. Anyframe IAM에서는 이 중 세번째 방법을 사용하고 있으며, 아래 내용은 Hibernate 를 WebLogic 에 적용하는 경우 공통적인 조치사항이기도 하다.

첫번째 방법 : WAR 의 경우

WEB-INF/classes/weblogic.xml 을 다음과 같이 설정한다.

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="http://www.bea.com/ns/weblogic/90"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd 
        http://www.bea.com/ns/weblogic/90 
        http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd">
    <wls:weblogic-version>10.0</wls:weblogic-version>
    <wls:jsp-descriptor>
        <wls:page-check-seconds>3</wls:page-check-seconds>
        <wls:precompile>false</wls:precompile>
    </wls:jsp-descriptor>
    <wls:container-descriptor>
        <wls:servlet-reload-check-secs>3</wls:servlet-reload-check-secs>
        <wls:resource-reload-check-secs>-1</wls:resource-reload-check-secs>
        <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
    </wls:container-descriptor>
    <wls:context-root>anyframe-iam-admin-web</wls:context-root>
    <wls:charset-params>
        <wls:input-charset>
            <wls:resource-path>/*</wls:resource-path>
            <wls:java-charset-name>utf-8</wls:java-charset-name>
        </wls:input-charset>
    </wls:charset-params>
</wls:weblogic-web-app>

두번째 방법 : EAR 의 경우

EAR 패키지의 META-INF/weblogic-application.xml 을 다음과 같이 설정한다.

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:wls="http://www.bea.com/ns/weblogic/90"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
        http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd
        http://www.bea.com/ns/weblogic/90
        http://www.bea.com/ns/weblogic/90/weblogic-application.xsd">
    <wls:prefer-application-packages>
        <wls:package-name>antlr.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:weblogic-application>

세번째 방법 : 클래스패스에 antlr 을 추가

%WL_HOME%\common\lib 디렉토리에 antlr-2.7.6.jar 을 복사한 후setDomainEnv.cmd 파일(또는 .sh 파일)에

set PRE_CLASSPATH=%WL_HOME%\common\lib\antlr-2.7.6.jar(UNIX sh : set PRE_CLASSPATH="${WL_HOME}/common/lib/antlr-2.7.6.jar"와 같이 추가해준다.