Where The Streets Have No Name

Weblogic상에서의 Servlet 실습, war 파일의 배포 본문

Developement/Java

Weblogic상에서의 Servlet 실습, war 파일의 배포

highheat 2006. 4. 27. 19:34
▷ Editplus에서 web.xml, weblogic.xml의 템플릿 파일을 생성하여 "C:/Program Files/EditPlus 2"폴더에 저장합니다.
(template_web.xml, template_weblogic.xml)

>>>>> template_web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
</web-app>

 

 

>>>>> template_weblogic.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

<weblogic-web-app>
<charset-params>
<input-charset>
  <resource-path>/*</resource-path>
  <java-charset-name>KSC5601</java-charset-name>
</input-charset>
</charset-params>

 <context-root>/</context-root>

</weblogic-web-app>


▩ Weblogic상에서의 Servlet 실습

//jsp(.jsp)  >> servlet (.java)  jsp page를 jsp컨테이너에서 실시간으로 servlet으로 바꾸어준다.

톰켓,웹로직,레진등.. .java=>.class 바꾸어서 결과를 웹브라우저에 보내어줌

//디자인작업이 많이 필요한site 는 Jsp유리 디자인변경없이 속도처리중요시하면 servlet성능우수
반면 servlet은 한문장을 처리하는데 여러줄의 코딩이 필요함으로 처리로직 페이지에 적합함
logic서버를 정지 시킵니다.
//Jsp Beans(처리로직) .java,전역변수(레코드),getter,setter로 변수를 액세스

1. Servlet 파일의 작업 
- eclipse에서는 작업시 아래의 경로를 지정하며 weblogic.jar을 추가해야 서블릿이 인식됩니다.

     경로:C:eaweblogic81serverlibweblogic.jar
   . Create Project At External Location: C:eauser_projectsdomainsmydomainapplicationswebtestWEB-INFclasses
   . Libraries: weblogic.jar 추가
   . Superclass: HttpServlet

>>>>> HelloServlet.java
package servlettest;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class HelloServlet extends HttpServlet {


  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws IOException, ServletException
  {
response.setContentType("text/html;charset=EUC-KR");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>안녕하세요. Hello</title></head>");
out.println("<body>안녕하세요. <br> Hello World</body>");
out.println("</html>");
}
}

 

>>>>> DOS 컴파일, Eclipse는 자동 컴파일 됨
C:eauser_projectsdomainsmydomainapplications estWEB-INFclasses>javac -d . *.java

 


2. jsptest/WEB-INF/web.xml파일을 이용해 서블릿 등록
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
  <servlet-name>helloworld</servlet-name>
  <servlet-class>servlettest.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>helloworld</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>

 


3. 테스트
-
http://127.0.0.1:7001/jsptest/hello
   결과>>Error 500--Internal Server Error //servletTest/classes/에 eclics   C:ejbeclipseworkspaceservletTestclasses 에 복사하여
C:eauser_projectsdomainsitwillapplicationsjsptestWEB-INFclasses 에 붙여넣기 해주어야 함>> eclipse 컴파일한 걸 weblogic에 복사

 

▩ war 파일의 배포

1.jsp페이지 작성
>>>>> count.jsp
<%@ page contentType="text/html;charset=EUC-KR"%>
<%     // 서블릿으로 부터 전달된 Integer객체를 읽어오는 부분.
Integer icount = (Integer)request.getAttribute("count");
String count = icount.toString();
%>
<html>
<head>
<title> 카운트 출력 </title>
</head>
<body>
<h3>
지금까지 방문한 사용자는 <%=count%> 입니다.
</h3>
</body>
</html>

 


2. servlet 페이지 작성
>>>>> CounterServlet.java
package servlettest;

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class CounterServlet extends HttpServlet {
private int count = 0;

    public void doPost(HttpServletRequest request,
                    HttpServletResponse response)
      throws IOException, ServletException
  {
doGet(request, response);
} // doPost

    public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws IOException, ServletException
  {
      // count.jsp에게 증가된 카운트 값을 RequestDispatcher를 이용하여 전달 //Request객체 전달자(RequestDispatcher)
      // 하고 있다.
  count++;
      request.setAttribute("count", new Integer(count));
      RequestDispatcher rd = getServletContext().getRequestDispatcher("/count.jsp");
      rd.forward(request, response);
}// doGet
}

 

3. webtest/WEB-INF/web.xml, webtest/WEB-INF/weblogic.xml 파일의 수정
>>>>> web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
  <servlet-name>helloworld</servlet-name>
  <servlet-class>servlettest.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>helloworld</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
  <servlet-name>counter</servlet-name>
  <servlet-class>servlettest.CounterServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>counter</servlet-name>
  <url-pattern>/counter</url-pattern>
</servlet-mapping>
</web-app>

 


>>>>> WEB-INF/weblogic.xml
<?xml version="1.0" ?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">

<weblogic-web-app>
<charset-params>
<input-charset>
  <resource-path>/*</resource-path>
  <java-charset-name>KSC5601</java-charset-name>
</input-charset>
</charset-params>

 <context-root>/jsptest</context-root>

</weblogic-web-app>

 

보기: http://127.0.0.1:7001/jsptest/counter


/* 조금더 편하게 자동화 시키는방법*/
▩ war 파일을 생성하여 배포
- C:eaatch 폴더를 만들고 PATH 환경변수에 등록합니다.
- HTML, JSP, Beans, Servlet쪽 개발 종료후 배포시에 생성합니다.
- 압축 원리는 jar하고 같으나 확장자만 war입니다.
- 저장위치는 C드라이브의 루트나 PATH에 잡힌 경로에 저장하면 자동으로 인식됩니다.

   - C:/bea/war 폴더를 생성합니다. 나중에 이곳은 확장자 "war"파일이 저장될 것입니다.

1.1 war.bat 를 작업하여 C:/bea/batch폴더로 저장합니다.
@ECHO OFF
c:
cd
cd beauser_projectsdomainsitwillapplications
cd jsptest

REM .war파일을 생성합니다.
jar cvf C:eawarwartest.war *.*
ECHO wartest.war이 생성되었습니다.
cd
cd beawar
dir

- DOS명령 창을 열어 war.bat를 실행합니다.
- applications/jsptest폴더를 삭제합니다.

1.2  builder.bat
REM weblogic서버를 실행합니다.
c:
cd C:eauser_projectsdomainsitwill
start startWeblogic.cmd

REM WeblogicBuilder를 실행합니다.
C:eajdk141_03injavaw.exe -client -cp "C:eaweblogic81serverlibweblogic.jar;C:eaweblogic81commonevalpointbaselibpbclient44.jar" weblogic.marathon.Main

2. Weblogic Builder를 통한 배치
- Weblogic을 먼저 실행합니다.
- [Other Development Tool] --[Weblogic Builder]를 통한 배치
- [Tools] -- [Connect to Server..]  //colsole에서처럼 로그인한다.

   - [Files] -- [Open] wartest.war     //압축한 war파일을 불러들인다.

   - [Tools] -- [Deploy Module]        //실제 배포작업


- war 파일이 있는곳이 소스 원본이 있는 곳으로 지우거나 이동할 수 없다. 따라서 폴더를 미리 결정한후 복사해서 작업합니다.
- war 파일이 압축이 풀려 실행되는 곳은 C:eauser_projectsdomainsmydomain2myserver.wlnotdeleteextract 폴더안이 됩니다.

 


보기: http://127.0.0.1:7001/jsptest/counter

- WebLogic Server Administration Console에서 확인합니다.

3. webdeploy.bat 를 작업하여 C:/bea/batch폴더로 저장합니다.
@ECHO OFF
c:
cd
cd beawar
dir

REM 빈을 EJB서버로 이동시킵니다.
copy /Y wartest.war C:eauser_projectsdomainsitwillapplications

REM weblogic서버를 실행합니다.
c:
cd C:eauser_projectsdomainsitwill
start startWeblogic.cmd

pause

REM counter Servlet 실행
c:
cd
cd Program FilesInternet Explorer
IEXPLORE.EXE http://127.0.0.1:7001/jsptest/counter

4. wardeploy.bat 를 작업하여 C:/bea/batch폴더로 저장합니다.
- start wardeploy.bat counter

@ECHO OFF
c:
cd
cd beawar
dir

REM 빈을 EJB서버로 이동시킵니다.
copy /Y %1.war C:eauser_projectsdomainsitwillapplications

REM weblogic서버를 실행합니다.
c:
cd C:eauser_projectsdomainsitwill
start startWeblogic.cmd

pause

REM counter Servlet 실행
c:
cd
cd Program FilesInternet Explorer
IEXPLORE.EXE http://127.0.0.1:7001/jsptest/%1