상세 컨텐츠

본문 제목

flex 4 + blazeDS + spring 3 연동하기-3(spring 설정)

소프트웨어/spring

by 야솔아빠 2011. 6. 17. 17:01

본문

반응형
여러번 고생하게 되었던 web.xml 입니다.
에러는 없는데 막상 spring framework이 작동을 안하거나, spring + blazeds 연동이 안되는 식의 runtime 에러가 발생하여 고생을 했던 기억이 있습니다.

web.xml에 blazeDS + spring 연동을 하기 이전에 maven의 dependency를 추가하여 관련 라이브러리 추가를 자동으로 하도록 하겠습니다.
BlazeDS.Spring 프로젝트에서 pom.xml 파일이 있을 겁니다.
pom.xml을 열어봅니다.


위 그림처럼 pom.xml 을 클릭해서 xml soruce 편집 화면이 보이도록 합니다.
</dependencies> 부분을 찾아서, </dependecies> 위에 아래 dependency를 추가합니다.
 <!--         
        <dependency>
            <groupId>org.springframework.flex</groupId>
            <artifactId>spring-flex-core</artifactId>
            <version>1.5.0.BUILD-SNAPSHOT</version>
        </dependency>
 -->
 
      <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-orm</artifactId>
       <version>${org.springframework-version}</version>
      </dependency>
      <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-test</artifactId>
       <version>${org.springframework-version}</version>
      </dependency>        
       <!-- jdbc driver 오라클-->
     <!--
       <dependency>
       <groupId>com.oracle</groupId>
       <artifactId>ojdbc14</artifactId>
       <version>10.2.0.4.0</version>
      </dependency>
      -->
      
      <!-- mysql driver -->
      <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>5.0.3</version>
      </dependency>
    
       <!-- dbcp jdbc connection pool-->
       <dependency>
       <groupId>commons-dbcp</groupId>
       <artifactId>commons-dbcp</artifactId>
       <version>1.2.2</version>
      </dependency>
    
       <!-- ibatis -->
       <dependency>
         <groupId>org.apache.ibatis</groupId>
         <artifactId>ibatis-sqlmap</artifactId>
         <version>2.3.4.726</version>
       </dependency>
       
       <!-- cglib ibatis를 위한 프록시 라이브러리-->
      <dependency>
       <groupId>cglib</groupId>
       <artifactId>cglib</artifactId>
       <version>2.2</version>
      </dependency>

pom.xml을 저장을 하면, 관련 jar 파일이 자동으로 프로젝트에 추가가 됩니다.
BlazeDS.Srping 프로젝트의 Maven Dependencies 를 보시면서 pom.xml의 dependency를 추가 했다가 삭제했다가 해보시면 아실 겁니다.

맨위에 주석처리한 dependency는 spring flex 관련 dependency 입니다. 그런데 아직까지는 공식 maven에서는 지원하지 않는다고 합니다. 그래서 저는 그냥 해당 jar 파일을 다운받아서 WEB-INF/lib 디렉토리에 복사하였습니다.
해당 파일은 spring flex community에서 받으실 수 있습니다.(http://www.springsource.org/spring-flex)
위 community에서 downloads를 클릭하셔서 압축을 풀면, dist 디렉토리가 있고, 그곳에 spring-flex-core-1.5.0.RC1.jar 파일이 존재합니다.




다음은 web.xml 입니다. (BlazeDS.Spring 프로젝트의 src/main/webapp/WEB-INF/web.xml)
web.xml 에 다음과 같이 수정을 합니다. 원래의 web.xml 과 비교를 해보시면 blazeDS + spring 연동하는 부분을 금방 확인 할 수 있을 겁니다.

 

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

<!-- 스프링 config에 대한 xml 설정 위치. -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/*-context.xml
</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Http Flex Session attribute and binding listener support -->
<listener>
<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>

<!-- Processes application requests -->
<!--
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

-->

<!-- MessageBroker Servlet 가장 중요. flex message broker에대한 spring config 정보를 지정을 하여 서블릿 등록 -->
<servlet>
<servlet-name>MessageBrokerServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/flex/myapplicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>MessageBrokerServlet</servlet-name>
<url-pattern>/messagebroker/*</url-pattern>
</servlet-mapping>

<!-- spring-mvd 서블릿은 일반적인 web application을 위한 서블릿 -->
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/*-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>/spring/*</url-pattern>
</servlet-mapping>
</web-app>



spring-mvc servlete 은 당장 사용할 서블릿은 아니지만, flex spring 연동 외에, 일반적인 wep application 도 같이 사용하고자 한다면 필요한 servlet 설정입니다.
즉 http://serverIP:port/{server context-roort}/spring/xxx
으로 request가 전달되면 spring-mvc servlet이 작동하고,
http://serverIP:port/{server context-roort}/messagebroker/xxx
로 request가 전달되면 MessageBrokerServlet servlet이 작동하도록 한다는 설정입니다.

다음으로 MessageBrokerServlet 에서 참조로 하는 myapplicationContext.xml 을 WEB-INF/flex 디렉토리에 작성합니다. 아래는 myapplicationContext.xml 입니다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:flex="http://www.springframework.org/schema/flex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/flex
http://www.springframework.org/schema/flex/spring-flex-1.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <flex:message-broker>
        <flex:remoting-service default-channels="my-amf" />
    </flex:message-broker>
    <context:component-scan base-package="com.biztino.buzzbuz" />
    
    
     <!--
 ###########################################################
 # import resource
 ###########################################################
 -->
 

  <import resource="classpath:com/biztino/buzzbuz/dao-context.xml"/>
  <!-- Scans within the base package of the application for @Components to configure as beans -->
  <context:component-scan base-package="com.biztino.buzzbuz" />
    
</beans>


마지막에서 4번째 줄의 import 부분은 주석처리를 합니다.
나중에 db연동을 위한 설정입니다.

반응형

관련글 더보기

댓글 영역