이번 장에서는 IAM Core가 사용하는 DB 설정을 관리자가 손쉽게 조작 할 수 있도록 하는 Anyframe IAM Admin 설치 절차에 대해서 알아본다.
IAM Admin의 설치 절차는 다음과 같다.
WAS에 anyframe.iam.admin.web-1.0.1.war 배포
remote-invoker-servlet.xml 파일 설정
다운로드 받은 Anyframe-iam-1.0.1-bin.zip 파일의 압축을 해제 하면 나오는 anyframe.iam.admin.web-1.0.1.war 파일을 WAS에 배포한다.
WAS 별 배포 방법에 대한 설명은 본 문서 범위를 넘어가므로 생략하였다.
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>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"와 같이 추가해준다.