|
SSISO Community검색 |
|
SSISO Community메뉴 |
|
SSISO Community카페 |
|
블로그 카테고리 |
|
|
struts-config.xml로 검색한 결과 |
|
등록일:2008-03-15 20:26:55 작성자: 제목:서버재시작없이 Struts 설정파일 초기화 |
|
다음과 같은 순서로 구현한다.
1. 확장 클래스 생성(MyAppServlet.java)
2. web.xml 파일 수정
3. reload.do를 호출할때 사용할 Action클래스 추가(ReloadStrutsConfigAction.java)
4. struts-config.xml 파일 수정
5 reload.jsp 생성
-----------------------------------------------------------------------------
1. 확장 클래스 생성(MyAppServlet.java)
package alpha.servlet;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.config.ModuleConfig;
import org.apache.struts.util.RequestUtils;
public class MyAppServlet extends ActionServlet {
protected void process(
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
String uri = request.getRequestURI();
if ((uri.indexOf("reload.do") != (-1))) {
init();
RequestUtils.selectModule(request, getServletContext());
ModuleConfig config = getModuleConfig(request);
getRequestProcessor(config).init(this, config);
RequestDispatcher dispatcher =
request.getRequestDispatcher("/reload.jsp");
dispatcher.forward(request, response);
} else {
super.process(request, response);
}
}
}
이 클래스에서 하는 역할은
첫째, ActionServlet의 init()메소드를 호출함으로서 struts-config.xml을 초기화할 수 있다.
둘째, RequestProcessor 클래스를 초기화한다. 왜냐면 RequestProcessor 클래스는
한번 호출된 Action클래스들을 저장하여 재새용을 하기 때문이다.
2. web.xml 파일 수정
struts의 ActionServlet 대신 임의로 만든 MyAppServlet이 어플리케이션의 모든 요청을 처리하는
진입점이 되게 변경해주어야 한다. 해서 그 역할을 담당하는 web.xml을 다음과 같이 수정한다
<!-- Default config -->
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
위 부분을 아래와 같이 수정한다.
<!-- Application reload -->
<servlet-name>action</servlet-name>
<display-name>Struts Action Servlet</display-name>
<servlet-class>alpha.servlet.MyAppServlet</servlet-class>
3. reload.do를 호출할때 사용할 Action클래스 추가(ReloadStrutsConfigAction.java)
이 클래스는 reload.do 로 진입할때 매핑할 (특별한 작업을 수행하지 않을) Action클래라고 생각하면 된다.
실제로 reload.do로 진입시 MyAppServlet에서 가로채 reload.jsp로 넘어가기 때문에 이 Action클래스는
사용되지도 않는다.
package alpha.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @struts.action
* path="/reload"
*/
public class ReloadStrutsConfigAction extends Action{
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
return null; // ActionForward 또한 null 로 처리하고 있다
}
}
4. struts-config.xml 파일 수정
ReloadStrutsConfigAction 클래스는 struts-config.xml 파일에 다음과 같이 매핑된다
<!-- Application reload -->
<action
path="/reload"
type="alpha.action.ReloadStrutsConfigAction"
unknown="false"
validate="true"
>
</action>
5. reload.jsp 생성
<%@ page contentType="text/html; charset=EUC-KR" %>
struts-config.xml파일이 정상적으로 리로드(reload) 되었습니다.<br/>
---------------------------------------------------------------------------------
지금까지 만든 결과물을 테스트하기 위해서
ApplicationResources.properties 파일을 생성한 후
이 리소스를 사용하는 간단한 jsp를 작성합니다.
jsp를 구동한 이후에 ApplicationResources.properties 를 수정한 후 새로고침을 하여도
변경된 내용은 반영이 되진 않습니다.
http://localhost:8080/xxx/reload.do 를 실행합니다.
그리고 jsp를 다시 호출하면 수정된 메세지가 반영이 되는것을 볼수 있습니다.
[출처] [본문스크랩] 서버재시작없이 Struts 설정파일 초기화 |작성자 어린양이
http://blog.naver.com/dlckdeo81?Redirect=Log&logNo=41775934 |
|
|
|
|
|