'struts'에 해당되는 글 3건

  1. 2016.05.06 Apache Struts 2 보안 업데이트
  2. 2013.07.19 Apache Struts 2 원격코드 실행 취약점 보안업데이트
  3. 2009.07.02 웹보고서 기능 만들기 (iReport->JasperReports)
2016. 5. 6. 19:20

Apache Struts 2 보안 업데이트

□ 개요
o Apache Struts 2에서 원격 코드 실행 취약점 등을 보완한 보안 업데이트 발표[1][2]
o 영향 받는 버전의 사용자는 최신버전으로 업데이트 권고

□ 설명
o 원격 코드 실행 취약점(CVE-2016-3081, CVE-2016-3082) [3][4]

□ 영향 받는 버전
o Struts 2.0.0 ~ Struts 2.3.28 (2.3.20.3 및 2.3.24.3 제외)

□ 해결 방안
o Struts 2.3.20.3, 2.3.24.3, 2.3.28.1로 업데이트

□ 기타 문의사항
o 한국인터넷진흥원 인터넷침해대응센터: 국번 없이 118

[참고사이트]
[1 ]http://struts.apache.org/download.cgi#struts23281
[2] http://struts.apache.org/docs/version-notes-23281.html
[3] http://struts.apache.org/docs/s2-031.html
[4] http://struts.apache.org/docs/s2-032.html



Trackback 0 Comment 0
2013. 7. 19. 20:00

Apache Struts 2 원격코드 실행 취약점 보안업데이트

개요

  • Apache Struts 2에서, 원격코드 실행 등의 취약점이 발견됨 [1],[2]
  • 공격자는 특수하게 조작한 파라미터를 취약점이 존재하는 서버로 전송할 경우, 원격코드 실행 등이 가능함
  • 취약한 버전을 사용하고 있을 경우, 해킹에 의해 홈페이지 변조, 데이터베이스 정보 유출 등의 피해를 입을 수 있으므로 서버 관리자의 적극적인 조치 필요


해당 시스템

  • 영향 받는 소프트웨어
    - Apache Struts 2.3.15 및 이전버전
      ※ Apache Struts 1.x 버전은 영향받지 않습니다 


해결방안

  • 취약한 Apache Struts 2 버전을 운용하고있는 웹서버 관리자는 2.3.15.1 이상 버전으로 업그레이드[3]

 


용어 정리

  • Apache Struts : 기업급 자바 웹 프로그램 구축을 위한 프레임 워크

 


기타 문의사항

  • 한국인터넷진흥원 인터넷침해대응센터: 국번없이 118

 

[참고사이트]
[1] http://struts.apache.org/release/2.3.x/docs/s2-016.html
[2] http://struts.apache.org/release/2.3.x/docs/s2-017.html
[3] http://struts.apache.org/download.cgi#struts23151



Trackback 0 Comment 0
2009. 7. 2. 11:43

웹보고서 기능 만들기 (iReport->JasperReports)

사용된 것들

MS Windows 2000 Advanced
JDK5.0 Update 8
TOMCAT 5.5
PostgreSql 8.1.4
Struts 1.2.9
iReport 1.2.5
JasperReports 1.2.5

Adobe Reader 7.0
AcroEdit 0.9.5.30


이 글을 무리없이 보고 이해할 수 있는 레벨

이글은 제가 생각하기에 웹보고서를 만드는 가장 쉬운 방법을 적은 글입니다.
하지만, 쉽다고는 하지만 아래에 밝힌 실력만큼은 갖추고 있는 분에게만 쉽다는 얘기입니다.
본문에서는 각 분야의 기초적인 설명은 하지 않습니다.
기초설명하다가 본래의 목적을 벗어날까 해서 입니다.

- 우선 톰캣에 웹어플리케이션을 만들 줄 알고 간단하게나마 운용할 줄 알아야 합니다.
자바에 대한 공부가 어느정도 되어 있어야 합니다.
  명령행에서 컴파일을 할 줄 알아야하고 간단한 소스는 눈으로 보고 어떻게 돌아가는 건지 파악할 줄 알아야 합니다.
- Struts에 대한 지식이 약간(?) 필요합니다.
- 데이타베이스를 다룰줄 알아야 합니다.
   이 문서에서는 PostgreSql을 사용하는데 다른 RDBM도 상관없지만 데이타베이스를 만들고 테이블도 만들어서 프라이머리키를 지정할 수 있고 기본적인 SQL문을 작성해서 실행할 줄 알아야 합니다.
-----------------------------------------------------------------

이 문서를 이해하면 할 수 있는 것

Java + Tomcat(Struts) + PostgreSql의 환경하에서
간단한 웹보고서를 자신의 웹어플리케이션에서 제공할 수 있게됩니다.

이 문서의 소프트웨어 환경

   다음은 이 문서를 작성하면서 설치한 환경입니다.

   실력이 있으신 분은 상관없지만 되도록 똑같은 환경에서 하셔야 에러를 최소한으로 줄이실 수 있을 것입니다.

   자신의 환경을 감안하면서 적용해 보시기 바랍니다.
  
   운영체제 : MS Windows 2000 Advanced

   JDK5.0 Tomcat 5.5 PostgreSql 8.1.4 설치
   Test용 Tomcat 웹어플리케이션 MyWeb02
   Adobe Reader 설치

   Struts 다운로드 및 설치

   다운로드 URL : http://struts.apache.org/downloads.html
   다운로드 파일명 : struts-1.2.9-bin.zip(13.8MB)

   설치 : 우선 적당한 곳에 압축을 풀어놓습니다.
             압축을 푼 폴더의 밑에 webapps 라는 폴더가 있는데
             그 안의 struts-blank.war를 톰캣밑의 webapps에 복사해 넣습니다.
             그러면 struts-blank 라는 웹어플리케이션이 자동으로 생깁니다.

             * 나중에 이 안의 lib 안의 파일들을 웹어플리케이션에 그대로 복사해 넣을 것입니다.

   JasperReports의 다운로드와 설치

   JasperReports H.P URL : http://jasperforge.org/sf/projects/jasperreports
   다운로드 파일명 : jasperreports-1.2.5.jar(1.33MB)
                              jasperreports-1.2.5-applet.jar(196KB)
                              jasperreports-1.2.5-project.tar.gz(24.1MB)
                              ; (이 파일은 이 문서에서는 사용하지 않음)
                              jasperreports-1.2.5-project.zip(28.3MB)

   JasperReports 설치 : 특별히 설치할 작업은 없습니다.

          * 이것도 나중에 이 안의 lib 폴더 안의 파일들을 웹어플리케이션에 전부 복사해 넣을 것입니다.

   iReport의 다운로드

   다운로드 URL : http://sourceforge.net/project/showfiles.php?group_id=64348
   다운로드 파일명 : iReport-1.2.5-windows-installer.exe(30.3MB)

   iReport의 설치

   다운로드 받은 iReport-1.2.5-windows-installer.exe 을 더블클릭

   설치시 어려운점은 없습니다. 그냥 Next 버튼을 몇 번 눌러주면 설치 끝.

   설치 위치는 설치시 특별히 바꾸지 않는한 C:/Program Files/JasperSoft/iReport-1.2.5 에 설치 됩니다.


iReport로 템플레이트 파일 만들기

- 우선 설치한 iReport를 실행합니다.

    저의 경우에는 iReport.exe 를 실행하지 않고 iReport.bat 를 실행합니다.
    왠지 이 배치파일로 실행해야 제대로 환경을 끌여들여서 실행하는 것 같습니다.

- iReport 화면이 떳으면 제일 처음에 JDBC 파일을 연결시켜 줍니다.
   여기서는 PostgreSql 8.1.4를 설치했으므로 PostgreSql 8.1.4의 설치폴더 밑에 JDBC 폴더 안에
   JDBC 드라이버가 설치되어 있는 것을 사용합니다.

   메뉴에서 Options->Classpath 를 선택하면 윈도우가 하나 뜨는데
   그 윈도우의 오른쪽에 있는 Add JAR 버튼을 누릅니다.
   C:Program FilesPostgreSQL8.1jdbc 안의 postgresql-8.1-405.jdbc3.jar 를 선택합니다.
   Save classp... 라는 버튼을 눌러 저장하고 나옵니다.

- 다음은 사용할 데이타소스를 정의해 줍니다.
   메뉴에서 Data->Connections / Datasources 를 선택합니다.
   화면 오른쪽의 New 버튼을 선택합니다.
   아래 그림처럼 입력합니다.(각자의 환경에 맞추면 됩니다.)


   이 문서에서는 Username 에는 postgres , Password에는 postgres를 넣었습니다.
   그 옆에 Save password는 체크해 주는 것이 나중을 위해 편합니다.
 
   Test 버튼을 눌러 제대로 연결이 되는지 확인합니다.
   당연한 얘기겠지만 데이타베이스명, 드라이버명,유저명,패스워드등을 잘 체크합니다.
   연결이 잘 되면 Save버튼으로 저장하고 나옵니다.
 
- 여기서 데이타베이스의 데이타를 정리하고 갑시다.
  현재 이 문서에서 사용하고 있는 데이타베이스는 PostgreSql이므로 그것을 위주로
  설명을 하겠지만 다른 데이타베이스도 별 문제없이 사용될 것입니다.
  어느 정도 데이타베이스를 다룰줄 알아야 이 밑의 데이타 준비를 할 수 있을 것입니다.
 
데이타베이스 생성

    CREATE DATABASE "MyDB01"
      WITH OWNER = postgres
           ENCODING = 'EUC_KR'
           TABLESPACE = pg_default;
 
  테이블생성
  : rel 이라는 테이블을 생성합니다.
    이것은 인맥구분에 사용할 테이블입니다.
    다음은 생성 SQL입니다.
 
    CREATE TABLE rel
    (
      rel_id int2 NOT NULL,
      rel_name text,
      CONSTRAINT "rel_PK" PRIMARY KEY (rel_id)
    )
 
  : tbl01 이라는 테이블을 생성합니다.
    이것은 인맥정보로서 사용할 테이블입니다.
    다음은 생성 SQL입니다.
 
    CREATE TABLE tbl01
    (
      uid int4 NOT NULL,
      fname text,
      telno1 text,
      rel_id int2,
      CONSTRAINT "tbl01_PK" PRIMARY KEY (uid)
    )
 
   다음은 위의 테이블에 넣을 데이타를 SQL문으로 만든 것입니다.

    insert into rel(rel_id, rel_name) values(1,'가족');
    insert into rel(rel_id, rel_name) values(2,'친척');
    insert into rel(rel_id, rel_name) values(3,'친구');
    insert into rel(rel_id, rel_name) values(4,'선배');
    insert into rel(rel_id, rel_name) values(5,'후배');
 
    insert into tbl01(uid,fname,telno1,rel_id) values(1,'아버지','011-111-1111',1);
    insert into tbl01(uid,fname,telno1,rel_id) values(2,'어머니','022-222-2222',1);
    insert into tbl01(uid,fname,telno1,rel_id) values(3,'큰형','033-333-3333',1);
    insert into tbl01(uid,fname,telno1,rel_id) values(4,'막내','044-444-4444',1);
 
    insert into tbl01(uid,fname,telno1,rel_id) values(5,'삼촌','055-555-5555',2);
    insert into tbl01(uid,fname,telno1,rel_id) values(6,'매형','066-666-6666',2);
 
    insert into tbl01(uid,fname,telno1,rel_id) values(7,'덕팔이','077-777-7777',3);
    insert into tbl01(uid,fname,telno1,rel_id) values(8,'용팔이','088-888-8888',3);
    insert into tbl01(uid,fname,telno1,rel_id) values(9,'삼순이','099-999-9999',3);
 
    insert into tbl01(uid,fname,telno1,rel_id) values(10,'최선배','100-100-1000',4);
    insert into tbl01(uid,fname,telno1,rel_id) values(11,'김선배','200-200-2000',4);
    insert into tbl01(uid,fname,telno1,rel_id) values(12,'이선배','300-300-3000',4);
 
    insert into tbl01(uid,fname,telno1,rel_id) values(13,'송혜교','123-123-1234',5);
    insert into tbl01(uid,fname,telno1,rel_id) values(14,'오연수','234-234-2345',5);
    insert into tbl01(uid,fname,telno1,rel_id) values(15,'김희선','345-345-3456',5);
 
    이 SQL을 실행시켜 기본 데이타를 준비하십시오.
    (각자, 준비해도 됩니다.)
 
- 데이타까지 준비가 됐으니 보고서를 만들 SQL을 만듭니다.
  
   SELECT b.rel_name, a.fname, a.telno1
   FROM tbl01 a LEFT JOIN rel b ON a.rel_id = b.rel_id
   ORDER BY b.rel_name
 
- 이제 보고서를 만들 준비가 끝났습니다.
 
   보고서를 만듭시다.(자신의 화면과 이 문서를 맞추어서 보시길...)
 
   우선 iReport의 기능중에 Report Wizard 라는 편리한 기능이 있는데
   이것을 이용하면 간단한 보고서 양식은 금방 만들 수 있습니다.
 
- 메뉴에서 File->Report Wizard 선택
 
- Step 1 : insert the query to retrieve report fields
 
   Connection / Datasource 에 위에서 만든 데이타소스명을 선택합니다.
   여기서는 MyDB01 밑에 SQL Query에 위에서 준비한 SQL 문장을 넣습니다.
  
   SELECT b.rel_name, a.fname, a.telno1
   FROM tbl01 a LEFT JOIN rel b ON a.rel_id = b.rel_id
   ORDER BY b.rel_name

 
- Next 버튼을 누르면 "SmartCard PIN"이라는 윈도우가 나와서 Password를
  넣으라고 나오는 사람은 데이타베이스 접속 패스워드를 넣어주면 됩니다.
  위에서 데이타소스 정의시 Save password에 체크를 해 둔 사람은 이 윈도우는 나타나지 않습니다.
 
- Step 2 : select fields 화면에서 모든 컬럼명을 오른쪽으로 선택해서 넣습니다.
  모든 컬럼을 선택하는 것은 단순히 ">>" 버튼을 누르면 됩니다.
  Next 버튼 클릭
 
- Step 3 : Group by 윈도우는 그냥 두고 Next 버튼 클릭
 
- Step 4 : choose layout
   Tabular layout을 선택
   classicT.xml 선택
   Next 버튼 선택
 
- Step 5 : finish
   Finish 버튼 클릭
 
여기까지 왔으면 보고서 하나가 거의 완성이 되었습니다.
 
우선 저장을 합니다.
이 문서의 경우에는 D:/TEST/report01.jrxml라는 이름으로 저장했습니다.
 
다음은, 컴파일
  메뉴->Build->Compile 를 선택하면 컴파일 됩니다.
  메뉴바에 이쁘장한 아이콘들도 준비되어 있는데 컴파일 아이콘을 찾아서 해도 됩니다.
 
다음은 출력될 보고서를 미리 봅니다.
  메뉴->Build->JRViewer preview 선택
  메뉴->Build->Execut(with active connection)을 선택
  잘 보여야 합니다.
 
다음은 PDF 형식으로 보죠.
  메뉴->Build->PDF preview 선택
  메뉴->Build->Execut(with active connection)을 선택
  잘 안보일겁니다.
  미리 설명하려다가 위에서 잊어먹었습니다.
  PDF로 보려면 iReport에 PDF는 뭘로 보겠다고 정해줘야 합니다.
  이 문서에서는 Adobe Reader로 PDF를 볼 것입니다.
  그래서 문두의 테스트 환경에 Adobe Reader 설치라고 친절히(?) 적어 놓았던 거죠.
 
  메뉴->Options->Settings 선택
  External programs 탭 선택
  PDF Viewer에 Adobe Viewer 프로그램 선택
  (이 문서에서는 C:/Program Files/AdobeAcrobat 7.0/Reader/AcroRd32.exe )
  Save 버튼을 선택해서 저장하고 나옵니다.
 
다시 위의 PDF 로 보는 걸 해보죠.
  이번엔 보입니다.
  한글 항목이 나타나질 않습니다.
  그럼 제대로 보이는겁니다.
 
이제부터 한글이 제대로 보이도록 하는 작업을 합니다.
    파일을 다운받는데 iTextAsian.jar 라는 파일을 받습니다.
    자세히는 모르겠는데 iText.jar와 연계해서 2바이트 코드를 PDF생성시
    가능하게 해 주는 것 같습니다.
 
    다운받은 iTextAsian.jar 를 iReport의 lib 폴더에 넣어줍니다.
    이 문서에서는 C:/Program Files/JasperSoft/iReport-1.2.5/lib 에 복사했습니다.
 
    iReport를 다시 실행시킵니다.
 
   좀 전에 만든 D:/TEST/report01.jrxml을 불러들입니다.
   그리고 한글이 보일 항목을 지정하고 옆에 Element Properties 창에서
   PDF Font에 HYGoThic-Medium 를 PDF Encoding에 UniKS-UCS2-H (Korean)를 지정하고
   다시 PDF Preview를 해봅니다.
 
   한글이 잘 보여야 합니다.
   잘 보이면 보고서를 좀 더 다듬죠.
   영어로된 항목명을 적당히 한글로 고쳐주고 이 때도 폰트를 맞춰줘야 합니다.
   (위에 설명한 폰트말고 몇 개가 더 되는게 있는데 그건 각자 찾아 보십시오.)
 
   이 문서에서는 이렇게 다듬었습니다.
 
참고로 위의 폰트 설정은 나중에 웹보고서 출력시 PDF로 출력할 때 한글을 보여주려고 하기 때문입니다.
위와 같이 설정하고 실행하는 웹어플리케이션에서 PDF로 볼 때 iTextAsian.jar를 찾지 못하면 에러가 납니다.
하지만 애플릿뷰어로 보여줄 때는 맞춰 줄 필요 없습니다.
 
이제 iReport로 작업하는 것은 이것으로 끝냅니다.
iReport의 디자인 방법이나 다른 기능들은 이 문서에서 설명하지 않습니다.
이 문서의 목적은 웹보고서를 어떻게 구현하는가에 초점을 맞추고 있기 때문입니다.
 
지금까지 한 것은 자동완성기능인 Report Wizard 를 이용한 것입니다.
수동으로 만드는 것도 각자 연습해 보시기 바랍니다.
아마 다른 비쥬얼툴을 사용해 보신 분이라면 어려움 없이 하실 수 있을 겁니다.
 
첨부파일을 이용하기
 
다음은 이 보고서를 웹을 통해 보여주어야 하기 때문에 웹어플리케이션을 하나 만듭니다.
아래의 첨부파일을 풀어서 톰캣이 웹어플리케이션으로서 인식하도록 합니다.

 
웹어플리케이션을 만드는 부분은 설명하지 않습니다.
 
이제부터 첨부파일의 구조대로 설명합니다.
 
이 문서에서는 톰캣을 이용하여 MyWeb02라는 웹어플리케이션을 생성했고 그 구조는 다음과 같습니다.

이 예제 웹어플리케이션을 실행하기 위해서는 준비과정이 필요합니다.
예제 소스에는 모든 라이브러리 파일은 담지 않았습니다.
파일크기도 커지고 각자 해 보는 것이 좋기 때문입니다.

예제에 필요한 파일 복사해 넣기

 /MyWeb02/WEB-INF/lib 에는 첨부파일에도 아무것도 들어있지 않는데
이 폴더에 아래의 파일들을 복사해 넣으십시오.

   - JasperReports를 압축해제한 폴더의 밑의 lib 안의 모든 JAR 파일
   - jasperreports-1.2.5.jar
   - jasperreports-1.2.5-applet.jar
   - iTextAsian.jar
   - postgresql-8.1-407.jdbc3.jar
   - /struts-blank 웹어플리케이션의 lib 안의 모든 파일

참고로 아래는 이 문서 작성시 /MyWeb02/WEB-INF/lib 에 들어있던 파일리스트입니다.

예제 프로그램을 실행시키기 위해서 이 파일들이 모두 필요하진 않습니다.
좀 더 가볍게 실행시키시고 싶은 분은 필요없는 것은 지우셔도 상관없습니다.
제 경우에는 잘 모르기 때문에 하나씩 지우면서 웹 어플리케이션이 실행되나 안되나
시험하면서 정리를 했었는데 나중에 귀찮아서 그냥 전부 넣고 돌립니다.

[/MyWeb02/WEB-INF/lib]
ant-1.5.1.jar
antlr-2.7.5.jar
antlr.jar
commons-beanutils-1.5.jar
commons-beanutils.jar
commons-collections-2.1.jar
commons-digester-1.7.jar
commons-digester.jar
commons-fileupload.jar
commons-javaflow-20060411.jar
commons-logging-1.0.2.jar
commons-logging-api-1.0.2.jar
commons-logging.jar
commons-validator.jar
groovy-all-1.0-beta-10.jar
hibernate3.jar
hsqldb-1.7.1.jar
itext-1.3.1.jar
iTextAsian.jar
jakarta-bcel-20050813.jar
jakarta-oro.jar
jasperreports-1.2.5-applet.jar
jasperreports-1.2.5.jar
jcommon-1.0.0.jar
jdt-compiler-3.1.1.jar
jfreechart-1.0.0.jar
jpa.jar
jxl-2.6.jar
list.txt
mondrian-2.0.1.jar
png-encoder-1.5.jar
poi-2.0-final-20040126.jar
postgresql-8.1-407.jdbc3.jar
servlet.jar
struts.jar
xalan.jar
xercesImpl.jar
xml-apis.jar

그리고 /MyWeb02/reports 에 위에서 iReport로 만든 파일을 넣어주는데
이 문서의 경우 보고서명(파일명)이 report01이었습니다.

그리고 report01.jrxml 파일은 잘 아는 곳에 저장을 해 두었습니다.

이 문서의 경우는 D:/TEST 였습니다.

그 report01.jrxml 과 iReport의 설치폴더 안에 보면 report01.jasper 파일이 있습니다.
위의 2개의 파일을 /MyWeb02/reports 에 넣어줍니다.

즉, report01.jrxml , report01.jasper 를 /MyWeb02/reports에 넣어줍니다.

다음, /MyWeb02/jsp 안에 java 파일이 2개 있습니다.
이 자바파일들을 컴파일해야 합니다.
이것도 컴파일한 클래스 파일을 넣을까 하다가 소스만 넣어 두었습니다.

명령행에서 컴파일 방법
   - 우선 클래스패스에 같은 폴더에 들어있는 jasperreports-1.2.5.jar 를 더해 줍니다.
   >set classpath=%classpath%;D:/tomcat_webapps/MyWeb02/jsp/jasperreports-1.2.5.jar[엔터]
   -> 이 때 클래스패스에
              %JAVA_HOME%libtools.jar
              %JAVA_HOME%libdt.jar
       가 잡혀있는 경우에는 위와 같이 해주면 되지만
       이 문서에서의 환경에서는 환경변수에 CLASSPATH가 없었습니다.
       그래서 위의 명령행에서 위의 폴더까지 들어가서
       아래와 같이 클래스패스를 잡아주었습니다.
       >set classpath=.;jasperreports-1.2.5.jar[엔터]

   - 컴파일
   >javac JRViewerSimple.java[엔터]
   >javac EmbeddedViewerApplet.java[엔터]

다음은 서블릿 파일을 컴파일합니다.
이 파일은 /MyWeb02/WEB-INF/src/reports 안에
JasperPrintServlet.java
ReportServlet.java
라는 이름으로 들어 있습니다.

Eclipse 를 사용하시는 분이라면 쉽게 컴파일까지 하실 수 있을겁니다.
여기서는 Eclipse가 없을 때 명령행에서 컴파일하는 방법을 설명합니다.

우선 명령행으로 나가서 /MyWeb02/WEB-INF/src/reports 까지 들어갑니다.
그 다음 여기서도 필요한 클래스를 패스로 잡아주고 컴파일하겠습니다.
다음 명령을 넣어줍니다.

>set classpath=.;C:/Tomcat55/common/lib/servlet-api.jar;../../lib/jasperreports-1.2.5.jar;../../lib/commons-beanutils.jar;../../lib/commons-digester.jar;../../lib/postgresql-8.1-407.jdbc3.jar;../../lib/struts.jar

이 명령에 대한 설명은 생략합니다.
명령행에서 컴파일하는 법은 우선 다른 웹사이트를 참조하시기 바랍니다.
이 문서와 똑같이 진행시켜 왔다면 컴파일이 될 것입니다.

다음은 컴파일
>javac -d ../../classes ReportServlet.java[엔터]
>javac -d ../../classes JasperPrintServlet.class[엔터]

/MyWeb02/WEB-INF/classes/reports 안을 확인해 보면 클래스 파일들이 생성되어 있을 겁니다.

이제 웹어플리케이션 MyWeb02를 재로드하거나 톰캣을 재기동한 후 브라우저로 열어봅니다.

http://localhost:8080/MyWeb02

그러면

MENU



Applet View

PDF View
 
이런 화면이 나타납니다.
 
Applet View 를 선택하면
 
Report name : report01 report02
cond1 : ___________
cond2 : ___________

이런 화면이 나타납니다.
 
test 버튼을 누르면 iReport에서 JRViewer preview 로 본 화면이 나타날 것입니다.
 
여기서 서버와 클라이언트 이렇게 두 대로 이 문서를 따라 하시는 분이 계신다면
클라이언트에서 서버에 접속해서 위의 페이지를 열었을 때 해당 클라이언트에 JRE가 설치되어 있지 않거나 JRE5.0 Update8 이하의 버전이 설치되어 있다면 아래의 화면이 나타날 것입니다.

예 버튼을 클릭하면 JRE를 설치하는 화면이 나옵니다.
 
동의함 버튼을 선택합니다. 설치가 진행됩니다.
 
설치가 끝나면 자동으로 혹은 지멋대로 C:/Program Files/Java/jre1.5.0_08 에 JRE가 설치되어 있습니다.
이 경로는 어디서 컨트롤 하는건지 알 수 가 없었습니다.
 
하여간 설치가 된 후 애플릿 화면이 나오길 기대하시겠지만 현재는 에러가 납니다.
그것은 소스 안을 살펴보시면 알게되는데 http://localhost:8080/MyWeb02~~~ 라고 정의 되어 있기 때문입니다.
이 부분도 여러분의 환경에 맞게 서버명을 고쳐서 해 보시기 바랍니다.
 
그리고 밑에서 설명하는 policy 설정 툴은
C:/Program Files/Java/jre1.5.0_08/bin 안에 들어있습니다.

여하튼 현재 서버도 클라이언트도 같은 머신이라는 가정하에
계속 갑시다.
 
서버와 클라이언트가 같은 머신이라면 이상없이 애플릿 화면이 나타날텐데 그 화면에서 프린터 아이콘을 눌러 인쇄를 하려 하면 현재로는 에러 화면이 나타날 것입니다.
 
이 에러를 잡느라 이틀동안 인터넷을 얼마나 많이 헤멧는지 모릅니다.
 
원인은 애플릿의 클라이언트 권한 문제였는데 다음과 같이 해서 우선 문제를 해결하시고 클라이언트에게 권한파일을 배포하시는 건 알아서 하시길 바랍니다.
(너무 무책임한 것 같지만 저도 잘 모르겠다는...)
 
하여간 다음을 보시고 판단하시길 바랍니다.
 
클라이언트의 명령 프롬프트로 나가서 아래 명령을 실행합니다.
 
>policytool[엔터]
 
다음과 같은 메세지가 나타납니다.
 
 
확인을 누른 다음 나타난 화면에서 정책항목추가 버튼을 선택합니다.
 
다음 화면에서 사용권한추가 버튼을 선택합니다.
사용권한 드롭다운리스트박스에서 AllPermission 을 선택합니다.
 
화면은 이렇게 됩니다.
 
 
다음은 확인을 선택합니다. 완료를 선택합니다.
 
파일->저장을 눌러 이 문서에서는 C:/Documents and Settings/Administrator 에 .java.policy 라는 파일명으로 저장합니다.
 
파일명 앞에 쩜(.)이 있는 것에 주의하시기 바랍니다.
 
노파심 : Windows2000이나 XP 사용하시는 분은 로그인한 유저의 루트 디렉토리에 만들어 줍니다.
             서버가 아닙니다. 이 웹어플리케이션에 접근하는 클라이언트 입니다.
 
이렇게 설정이 끝났으면 좀 전의 웹어플리케이션을 처음부터 다시 실행해서 애플릿의 프린터 아이콘으로 인쇄를 해 보시기 바랍니다.
프린터 선택화면이 나오면 성공적으로 퍼미션 문제가 해결된 것입니다.
 
위에서 정의한 AllPermission은 좋은 설정이 아닐지 모르니 실제 적용에는 주의하시기 바랍니다.
 
다음은 PDF 도 실행해 보십시오.
아마, 잘 될 것입니다.
 
이 문서의 환경과 같고 제가 올린 소스를 그대로 적용하신 분이라면 별문제없이 잘 실행될 것입니다.
이 문서를 작성하느라 제 운영체제를 세번이나 새로 설치해서 이 문서를 보며 재검증까지 마쳤으니까요.
( 그런대도 설명이 이모양이냐? 하시면 저도 어쩔수가 없다는.... )
 
이제 iReport를 이용한 웹보고서 출력 기능 설명은 끝났습니다.
 
예제의 폼에 있는 cond1과 cond2 는 다른 보고서를 만들 때 SQL에 파라메터를 넘길 경우를
테스트하기 위해 만들어 둔 것입니다.
이 부분은 위의 나는나님의 매뉴얼을 보면서 공부를 해 보시기 바랍니다.
센스가 있으신 분들은 금방 하실 수 있으리라 믿습니다.
그리고 소스의 안에도 위의 두 개의 파라메터를 처리하는 부분이 같이 들어있습니다.
 
여러분의 몫으로 남겨 둡니다.


출처 : http://tong.nate.com/boxitem


Trackback 0 Comment 0