Top > MyPage
 

Cactus

Cactus

ダウンロード

僕のJ2EEが1.3なので jakarta-cactus-13-1.5.zipを下からダウンロード。

http://jakarta.apache.org/site/binindex.cgi

展開

  1. 上記のURLからダウンしたファイルをどこかに,展開。
  2. c:\study\sakai\lesson1に,TomCatのドキュメントルートを作成(server.xmlの変更)
  3. apache2のworkers2.propertiesも変更
  4. どのjarファイルが必要だがよくわからないので,cactusのlib/にあったjarファイルを全て,lesson2のWEB-INF/libにコピー。
  5. さらに,いいかげんに以前lesson1で使っていたjarファイルもコピー。
  6. そして,sampleの中のservletディレクトリーをTomcatのdocumentにディレクトリーごとコピー。

相当いいかげんにやったので,下のようなディレクトリになった。この中で,cactus以下のディレクトリはただのサンプル(このあとすぐに述べる。したがって前半の長〜いのは読み飛ばして,WEB-INFあたりを参考に)。junitというディレクトリはjunitの復習用に僕が作ったディレクトリ。それからWEB-INF/src以下のファイルがcactusの自分で作った(もちろん,見よう見まねで)cactusの実験用のソース(後述)。また,lesson2直下にあるのは,eclipseなどが使っている.checkstyleや.projectなどのドットファイル。

lesson2 < Dir > ----
├ build < Dir > ----
├ cactus < Dir > ----
│ └ servlet < Dir > ----
│ ├ dist < Dir > ----
│    │ └ cactus-sample-servlet.war                             480,679 ---A
│ ├ lib < Dir > ----
│    │ ├ jstl-1.0.2.jar                                         20,962 ---A
│    │ └ standard-1.0.2.jar                                    516,487 ---A
│ ├ src < Dir > ----
│    │ ├ conf                                                  < Dir > ----
│    │ │ └ jboss3x                                            < Dir > ----
│    │ │    ├ jboss-web.xml                                        82 ---A
│    │ │    ├ roles.properties                                     33 ---A
│    │ │    └ users.properties                                     36 ---A
│    │ ├ java                                                  < Dir > ----
│    │ │ └ org                                                < Dir > ----
│    │ │    └ apache                                          < Dir > ----
│    │ │       └ cactus                                       < Dir > ----
│    │ │          └ sample                                    < Dir > ----
│    │ │             ├ util                                   < Dir > ----
│    │ │             │ ├ FilterServletOutputStream.java        4,616 ---A
│    │ │             │ └ GenericResponseWrapper.java           6,275 ---A
│    │ │             ├ SampleBodyTag.java                       5,254 ---A
│    │ │             ├ SampleFilter.java                        6,800 ---A
│    │ │             ├ SampleServlet.java                       9,454 ---A
│    │ │             ├ SampleServletConfig.java                 3,529 ---A
│    │ │             └ SampleTag.java                           6,388 ---A
│    │ ├ test-cactus                                           < Dir > ----
│    │ │ └ org                                                < Dir > ----
│    │ │    └ apache                                          < Dir > ----
│    │ │       └ cactus                                       < Dir > ----
│    │ │          └ sample                                    < Dir > ----
│    │ │             ├ unit                                   < Dir > ----
│    │ │             │ ├ TestAll.java                          3,661 ---A
│    │ │             │ ├ TestBasicAuthentication.java          4,073 ---A
│    │ │             │ ├ TestClientServerSynchronization.      4,787 ---A
│    │ │             │ │ java
│    │ │             │ ├ TestCookie.java                       4,129 ---A
│    │ │             │ ├ TestFilterHttpHeaders.java            4,006 ---A
│    │ │             │ ├ TestGlobalBeginEnd.java               6,331 ---A
│    │ │             │ ├ TestHttpHeaders.java                  7,705 ---A
│    │ │             │ ├ TestHttpParameters.java               5,612 ---A
│    │ │             │ ├ TestHttpRequest.java                  6,681 ---A
│    │ │             │ ├ TestHttpRequestSpecific.java          4,557 ---A
│    │ │             │ ├ TestHttpResponse.java                11,857 ---A
│    │ │             │ ├ TestHttpSession.java                  5,453 ---A
│    │ │             │ ├ TestHttpUnitIntegration.java          4,790 ---A
│    │ │             │ ├ TestJspOut.java                       3,818 ---A
│    │ │             │ ├ TestJspPageContext.java               4,101 ---A
│    │ │             │ ├ TestJspTagLifecycle.java             26,001 ---A
│    │ │             │ ├ TestJUnitTestCaseWrapper.java         4,675 ---A
│    │ │             │ ├ TestRequestDispatcher.java            7,456 ---A
│    │ │             │ ├ TestServerSideExceptions.java         9,618 ---A
│    │ │             │ ├ TestServletConfig.java                6,884 ---A
│    │ │             │ ├ TestServletRedirectorOverride.ja      4,962 ---A
│    │ │             │ │ va
│    │ │             │ ├ TestSetUpTearDown.java                4,795 ---A
│    │ │             │ ├ TestSetURL.java                      10,517 ---A
│    │ │             │ ├ TestShareAll.java                     4,755 ---A
│    │ │             │ └ TestTearDownException.java            4,185 ---A
│    │ │             ├ TestSampleBodyTag.java                   5,796 ---A
│    │ │             ├ TestSampleFilter.java                    7,800 ---A
│    │ │             ├ TestSampleServlet.java                  16,058 ---A
│    │ │             ├ TestSampleServletConfig.java             4,113 ---A
│    │ │             └ TestSampleTag.java                       8,229 ---A
│    │ └ webapp                                                < Dir > ----
│    │    ├ test                                               < Dir > ----
│    │    │ ├ filterRedirector.jsp                                  0 ---A
│    │    │ └ test.jsp                                            191 ---A
│    │    ├ WEB-INF                                            < Dir > ----
│    │    │ ├ cactus-web.xml                                    1,466 ---A
│    │    │ └ web.xml                                             206 ---A
│    │    └ cactus-report.xsl                                   12,063 ---A
│ ├ target < Dir > ----
│    │ ├ classes                                               < Dir > ----
│    │ │ ├ cactus                                             < Dir > ----
│    │ │ │ └ org                                             < Dir > ----
│    │ │ │    └ apache                                       < Dir > ----
│    │ │ │       └ cactus                                    < Dir > ----
│    │ │ │          └ sample                                 < Dir > ----
│    │ │ │             ├ unit                                < Dir > ----
│    │ │ │             │ ├ TestAll.class                      1,300 ---A
│    │ │ │             │ ├ TestBasicAuthentication.class      1,199 ---A
│    │ │ │             │ ├ TestClientServerSynchronizati        942 ---A
│    │ │ │             │ │ on.class
│    │ │ │             │ ├ TestCookie.class                   1,048 ---A
│    │ │ │             │ ├ TestFilterHttpHeaders.class          843 ---A
│    │ │ │             │ ├ TestGlobalBeginEnd.class           1,478 ---A
│    │ │ │             │ ├ TestHttpHeaders.class              1,445 ---A
│    │ │ │             │ ├ TestHttpParameters.class           1,536 ---A
│    │ │ │             │ ├ TestHttpRequest.class              2,431 ---A
│    │ │ │             │ ├ TestHttpRequestSpecific.class      1,259 ---A
│    │ │ │             │ ├ TestHttpResponse.class             3,425 ---A
│    │ │ │             │ ├ TestHttpSession.class              1,422 ---A
│    │ │ │             │ ├ TestHttpUnitIntegration.class      1,149 ---A
│    │ │ │             │ ├ TestJspOut.class                     657 ---A
│    │ │ │             │ ├ TestJspPageContext.class           1,234 ---A
│    │ │ │             │ ├ TestJspTagLifecycle$1.class        1,284 ---A
│    │ │ │             │ ├ TestJspTagLifecycle.class          5,777 ---A
│    │ │ │             │ ├ TestJUnitTestCaseWrapper.clas      1,193 ---A
│    │ │ │             │ │ s
│    │ │ │             │ ├ TestRequestDispatcher.class        2,670 ---A
│    │ │ │             │ ├ TestServerSideExceptions$NotS        523 ---A
│    │ │ │             │ │ erializableException.class
│    │ │ │             │ ├ TestServerSideExceptions$Seri        545 ---A
│    │ │ │             │ │ alizableException.class
│    │ │ │             │ ├ TestServerSideExceptions.clas      2,849 ---A
│    │ │ │             │ │ s
│    │ │ │             │ ├ TestServletConfig.class            2,418 ---A
│    │ │ │             │ ├ TestServletRedirectorOverride      1,029 ---A
│    │ │ │             │ │ .class
│    │ │ │             │ ├ TestSetUpTearDown.class            1,214 ---A
│    │ │ │             │ ├ TestSetURL.class                   2,600 ---A
│    │ │ │             │ ├ TestShareAll.class                 3,882 ---A
│    │ │ │             │ └ TestTearDownException.class          681 ---A
│    │ │ │             ├ TestSampleBodyTag.class               1,788 ---A
│    │ │ │             ├ TestSampleFilter$1.class                886 ---A
│    │ │ │             ├ TestSampleFilter.class                1,933 ---A
│    │ │ │             ├ TestSampleServlet.class               5,342 ---A
│    │ │ │             ├ TestSampleServletConfig.class           632 ---A
│    │ │ │             └ TestSampleTag.class                   2,181 ---A
│    │ │ └ java                                               < Dir > ----
│    │ │    └ org                                             < Dir > ----
│    │ │       └ apache                                       < Dir > ----
│    │ │          └ cactus                                    < Dir > ----
│    │ │             └ sample                                 < Dir > ----
│    │ │                ├ util                                < Dir > ----
│    │ │                │ ├ FilterServletOutputStream.cla        561 ---A
│    │ │                │ │ ss
│    │ │                │ └ GenericResponseWrapper.class       1,160 ---A
│    │ │                ├ SampleBodyTag.class                   1,173 ---A
│    │ │                ├ SampleFilter.class                    1,462 ---A
│    │ │                ├ SampleServlet.class                   3,099 ---A
│    │ │                ├ SampleServletConfig.class               428 ---A
│    │ │                └ SampleTag.class                       1,695 ---A
│    │ ├ test-reports                                          < Dir > ----
│    │ │ ├ jboss3x                                            < Dir > ----
│    │ │ │ ├ allclasses-frame.html                               286 ---A
│    │ │ │ ├ index.html                                          617 ---A
│    │ │ │ ├ overview-frame.html                                 363 ---A
│    │ │ │ ├ overview-summary.html                             1,327 ---A
│    │ │ │ ├ stylesheet.css                                      960 ---A
│    │ │ │ └ TESTS-TestSuites.xml                                 67 ---A
│    │ │ ├ orion1x                                            < Dir > ----
│    │ │ │ ├ allclasses-frame.html                               286 ---A
│    │ │ │ ├ index.html                                          617 ---A
│    │ │ │ ├ overview-frame.html                                 363 ---A
│    │ │ │ ├ overview-summary.html                             1,327 ---A
│    │ │ │ ├ stylesheet.css                                      960 ---A
│    │ │ │ └ TESTS-TestSuites.xml                                 67 ---A
│    │ │ ├ orion2x                                            < Dir > ----
│    │ │ │ ├ allclasses-frame.html                               286 ---A
│    │ │ │ ├ index.html                                          617 ---A
│    │ │ │ ├ overview-frame.html                                 363 ---A
│    │ │ │ ├ overview-summary.html                             1,327 ---A
│    │ │ │ ├ stylesheet.css                                      960 ---A
│    │ │ │ └ TESTS-TestSuites.xml                                 67 ---A
│    │ │ ├ resin2x                                            < Dir > ----
│    │ │ │ ├ allclasses-frame.html                               286 ---A
│    │ │ │ ├ index.html                                          617 ---A
│    │ │ │ ├ overview-frame.html                                 363 ---A
│    │ │ │ ├ overview-summary.html                             1,327 ---A
│    │ │ │ ├ stylesheet.css                                      960 ---A
│    │ │ │ └ TESTS-TestSuites.xml                                 67 ---A
│    │ │ ├ tomcat4x                                           < Dir > ----
│    │ │ │ ├ org                                             < Dir > ----
│    │ │ │ │ └ apache                                       < Dir > ----
│    │ │ │ │    └ cactus                                    < Dir > ----
│    │ │ │ │       └ sample                                 < Dir > ----
│    │ │ │ │          ├ unit                                < Dir > ----
│    │ │ │ │          │ ├ package-frame.html                 3,219 ---A
│    │ │ │ │          │ ├ package-summary.html               4,313 ---A
│    │ │ │ │          │ ├ TestBasicAuthentication.html      12,812 ---A
│    │ │ │ │          │ ├ TestClientServerSynchronizati     12,964 ---A
│    │ │ │ │          │ │ on.html
│    │ │ │ │          │ ├ TestCookie.html                   12,729 ---A
│    │ │ │ │          │ ├ TestFilterHttpHeaders.html        12,788 ---A
│    │ │ │ │          │ ├ TestGlobalBeginEnd.html           12,777 ---A
│    │ │ │ │          │ ├ TestHttpHeaders.html              13,008 ---A
│    │ │ │ │          │ ├ TestHttpParameters.html           12,902 ---A
│    │ │ │ │          │ ├ TestHttpRequest.html              12,995 ---A
│    │ │ │ │          │ ├ TestHttpRequestSpecific.html      12,920 ---A
│    │ │ │ │          │ ├ TestHttpResponse.html             13,484 ---A
│    │ │ │ │          │ ├ TestHttpSession.html              13,010 ---A
│    │ │ │ │          │ ├ TestHttpUnitIntegration.html      12,936 ---A
│    │ │ │ │          │ ├ TestJspOut.html                   12,718 ---A
│    │ │ │ │          │ ├ TestJspPageContext.html           12,774 ---A
│    │ │ │ │          │ ├ TestJspTagLifecycle.html          15,642 ---A
│    │ │ │ │          │ ├ TestJUnitTestCaseWrapper.html     12,802 ---A
│    │ │ │ │          │ ├ TestRequestDispatcher.html        13,238 ---A
│    │ │ │ │          │ ├ TestServerSideExceptions.html     13,187 ---A
│    │ │ │ │          │ ├ TestServletConfig.html            13,278 ---A
│    │ │ │ │          │ ├ TestServletRedirectorOverride     13,090 ---A
│    │ │ │ │          │ │ .html
│    │ │ │ │          │ ├ TestSetUpTearDown.html            12,872 ---A
│    │ │ │ │          │ ├ TestSetURL.html                   13,432 ---A
│    │ │ │ │          │ └ TestTearDownException.html        12,789 ---A
│    │ │ │ │          ├ package-frame.html                    1,062 ---A
│    │ │ │ │          ├ package-summary.html                  1,549 ---A
│    │ │ │ │          ├ TestSampleBodyTag.html               12,745 ---A
│    │ │ │ │          ├ TestSampleFilter.html                13,226 ---A
│    │ │ │ │          ├ TestSampleServlet.html               14,155 ---A
│    │ │ │ │          ├ TestSampleServletConfig.html         12,783 ---A
│    │ │ │ │          └ TestSampleTag.html                   13,071 ---A
│    │ │ │ ├ allclasses-frame.html                             4,391 ---A
│    │ │ │ ├ index.html                                          617 ---A
│    │ │ │ ├ overview-frame.html                                 663 ---A
│    │ │ │ ├ overview-summary.html                             1,703 ---A
│    │ │ │ ├ stylesheet.css                                      960 ---A
│    │ │ │ ├ TEST-org.apache.cactus.sample.TestSampleBody     10,701 ---A
│    │ │ │ │ Tag.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.TestSampleFilt     10,979 ---A
│    │ │ │ │ er.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.TestSampleServ     11,763 ---A
│    │ │ │ │ let.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.TestSampleServ     10,709 ---A
│    │ │ │ │ letConfig.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.TestSampleTag.     10,891 ---A
│    │ │ │ │ xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestBasic     10,720 ---A
│    │ │ │ │ Authentication.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestClien     10,779 ---A
│    │ │ │ │ tServerSynchronization.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestCooki     10,702 ---A
│    │ │ │ │ e.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestFilte     10,762 ---A
│    │ │ │ │ rHttpHeaders.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestGloba     10,710 ---A
│    │ │ │ │ lBeginEnd.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestHttpH     10,851 ---A
│    │ │ │ │ eaders.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestHttpP     10,783 ---A
│    │ │ │ │ arameters.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestHttpR     10,838 ---A
│    │ │ │ │ equest.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestHttpR     10,775 ---A
│    │ │ │ │ equestSpecific.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestHttpR     11,264 ---A
│    │ │ │ │ esponse.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestHttpS     10,854 ---A
│    │ │ │ │ ession.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestHttpU     10,848 ---A
│    │ │ │ │ nitIntegration.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestJspOu     10,691 ---A
│    │ │ │ │ t.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestJspPa     10,707 ---A
│    │ │ │ │ geContext.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestJspTa     12,374 ---A
│    │ │ │ │ gLifecycle.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestJUnit     10,704 ---A
│    │ │ │ │ TestCaseWrapper.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestReque     10,999 ---A
│    │ │ │ │ stDispatcher.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestServe     10,934 ---A
│    │ │ │ │ rSideExceptions.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestServl     11,007 ---A
│    │ │ │ │ etConfig.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestServl     10,863 ---A
│    │ │ │ │ etRedirectorOverride.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestSetUp     10,757 ---A
│    │ │ │ │ TearDown.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestSetUR     11,093 ---A
│    │ │ │ │ L.xml
│    │ │ │ ├ TEST-org.apache.cactus.sample.unit.TestTearD     10,707 ---A
│    │ │ │ │ ownException.xml
│    │ │ │ └ TESTS-TestSuites.xml                            324,965 ---A
│    │ │ ├ tomcat5x                                           < Dir > ----
│    │ │ │ ├ allclasses-frame.html                               286 ---A
│    │ │ │ ├ index.html                                          617 ---A
│    │ │ │ ├ overview-frame.html                                 363 ---A
│    │ │ │ ├ overview-summary.html                             1,327 ---A
│    │ │ │ ├ stylesheet.css                                      960 ---A
│    │ │ │ └ TESTS-TestSuites.xml                                 67 ---A
│    │ │ ├ weblogic7x                                         < Dir > ----
│    │ │ │ ├ allclasses-frame.html                               286 ---A
│    │ │ │ ├ index.html                                          617 ---A
│    │ │ │ ├ overview-frame.html                                 363 ---A
│    │ │ │ ├ overview-summary.html                             1,327 ---A
│    │ │ │ ├ stylesheet.css                                      960 ---A
│    │ │ │ └ TESTS-TestSuites.xml                                 67 ---A
│    │ │ └ tomcat4x.out                                         3,470 ---A
│    │ ├ cactus-sample-servlet.war                             480,679 ---A
│    │ ├ cactus-sample-servlet-cactified.war                 1,416,078 ---A
│    │ ├ logging_client.properties                                   0 ---A
│    │ └ logging_server.properties                                   0 ---A
│ ├ build.properties 1,985 ---A
│ ├ build.xml 17,656 ---A
│ ├ logging_client.properties.sample 3,064 ---A
│ ├ logging_server.properties.sample 2,999 ---A
│ └ README 167 ---A
├ Junit < Dir > ----
│ ├ FactorialCalculator.java 415 ---A
│ └ TestFactorialCalculator.java 877 ---A
├ src < Dir > ----
│ └ servlet < Dir > ----
├ WEB-INF < Dir > ----
│ ├ classes < Dir > ----
│ │ ├ cactustest                                               < Dir > ----
│ │ │ ├ TestAll.class                                             989 ---A
│ │ │ ├ TestUserRegistServlet.class                             1,487 ---A
│ │ │ └ UserRegistServlet.class                                 1,550 ---A
│ │ ├ org                                                      < Dir > ----
│ │ │ └ apache                                                < Dir > ----
│ │ │    └ jsp                                                < Dir > ----
│ │ ├ cactus.properties                                            164 ---A
│ │ ├ FactorialCalculator.class                                    479 ---A
│ │ └ TestFactorialCalculator.class                              1,111 ---A
│ ├ lib < Dir > ----
│ │ ├ ant-1.5.jar                                              716,139 ---A
│ │ ├ aspectjrt-1.1.1.jar                                       29,329 ---A
│ │ ├ cactus-1.5.jar                                           250,622 ---A
│ │ ├ cactus-ant-1.5.jar                                       161,383 ---A
│ │ ├ commons-beanutils.jar                                     13,123 ---A
│ │ ├ commons-collections.jar                                   58,798 ---A
│ │ ├ commons-digester.jar                                      41,239 ---A
│ │ ├ commons-httpclient-2.0-rc2.jar                           219,356 ---A
│ │ ├ commons-logging-1.0.3.jar                                 31,605 ---A
│ │ ├ dom.jar                                                   26,710 ---A
│ │ ├ dom4j.jar                                                445,345 ---A
│ │ ├ highstandard2.jar                                        356,752 ---A
│ │ ├ httpunit-1.5.3.jar                                       335,693 ---A
│ │ ├ jaxen-full.jar                                           191,881 ---A
│ │ ├ jaxp-api.jar                                              27,052 ---A
│ │ ├ jdbc2_0-stdext.jar                                         6,727 ---A
│ │ ├ jstl.jar                                                  20,801 ---A
│ │ ├ junit-3.8.1.jar                                          121,070 ---A
│ │ ├ nekohtml-0.7.4.jar                                        52,666 ---A
│ │ ├ postgresql.jar                                           183,273 ---A
│ │ ├ sax.jar                                                   26,206 ---A
│ │ ├ saxpath.jar                                               23,563 ---A
│ │ ├ servletapi-2.3.jar                                        76,107 ---A
│ │ ├ standard.jar                                             498,612 ---A
│ │ ├ struts.jar                                               326,441 ---A
│ │ ├ velocity-dep-1.3.1.jar                                   510,105 ---A
│ │ ├ velocity-tools-1.0.jar                                    53,308 ---A
│ │ ├ velocity-tools-generic-1.0.jar                             7,435 ---A
│ │ ├ velocity-tools-view-1.0.jar                               44,230 ---A
│ │ ├ xalan.jar                                              1,002,741 ---A
│ │ └ xercesImpl.jar                                           974,690 ---A
│ ├ src < Dir > ----
│ │ └ cactustest                                               < Dir > ----
│ │    ├ TestAll.java                                              574 ---A
│ │    ├ TestUserRegistServlet.java                              1,287 ---A
│ │    └ UserRegistServlet.java                                  1,650 ---A
│ ├ jspRedirector.jsp 1,081 ---A
│ └ web.xml 1,121 ---A
├ work < Dir > ----
│ └ org < Dir > ----
│ └ apache < Dir > ----
│ └ jsp < Dir > ----
├ .checkstyle 85 ---A
├ .classpath 4,026 ---A
├ .project 658 ---A
├ .tomcatplugin 329 ---A
├ cactus-report.xsl 12,063 ---A
└ velocity.log 2,477 ---A

とりあえずsampleのbuild.xmlを動かしてみる

  • 先のcactusを展開したところでそのままチェックするのだったら,たぶん,あまり問題はなかったのでしょうが,lesson2にサンプルをコピーしてantでチェックしようとしたので,いくつかbuild.xmlを修正する必要があった。1つはjarファイルの場所,もう1つはもともとbuild.confにあるバグのコメントアウト。^^^^の印が付いているところを自分の環境に合わせた。
    • jarファイルの場所指定
    <!-- Libraries required for the Cactus tests -->
    <property name="aspectjrt.jar"
    location="../../WEB-INF/lib/aspectjrt-1.1.1.jar"/>
                   ^^^^^^^^^
    <property name="cactus.jar"
    location="../../WEB-INF/lib/cactus-1.5.jar"/>
                   ^^^^^^^^^
    <property name="cactus.ant.jar"
    location="../../WEB-INF/lib/cactus-ant-1.5.jar"/>
                   ^^^^^^^^^
    <property name="commons.httpclient.jar"
    location="../../WEB-INF/lib/commons-httpclient-2.0-rc2.jar"/>
                   ^^^^^^^^^
    <property name="commons.logging.jar"
    location="../../WEB-INF/lib/commons-logging-1.0.3.jar"/>
                   ^^^^^^^^^
    <property name="httpunit.jar"
    location="../../WEB-INF/lib/httpunit-1.5.3.jar"/>
                   ^^^^^^^^^
    <property name="junit.jar"
    location="../../WEB-INF/lib/junit-3.8.1.jar"/>
                   ^^^^^^^^^
    <property name="nekohtml.jar"
    location="../../WEB-INF/lib/nekohtml-0.7.4.jar"/>
                   ^^^^^^^^^
    
  • バグの場所(コメントアウトしてある)
    <!--
    <fail unless="properties.ok">Missing property or property pointing to an \
        invalid file
      (check your build.properties file)</fail>
      -->
    
  • cactusのbuild.propertiesの編集とportの変更とtomcat.home.40のコメントのはずし
    cactus.port = 8081
    .......
    cactus.home.tomcat4x = c:/Tomcat 4.1
    
  • 本当はこれでうまく行くはずなんだが,すでにTomcatを起動していると,動かない(止めると動く)。あるホームページだとcactusのディレクトリ下にある「server.xmlのポートを変えろ」などと書いてあるのだけれど,今のバージョンと話がもともとずれていて,僕のバージョンにはそんなファイルがない。とりあえず,しょうがないので,Tomcatを止めてから,antしてみた。その結果が,以下である。一応成功しているようだ。
    $ant
    
    Buildfile: build.xml
    
    init:
    
    clean:
      [delete] Deleting directory C:\study\sakai\lesson1\cactus\servlet\target
    
    compile.java:
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\classes\java
    [javac] Compiling 7 source files to \
        C:\study\sakai\lesson1\cactus\servlet\target\classes\java
    
    war:
    [war] Building war: \
        C:\study\sakai\lesson1\cactus\servlet\target\cactus-sample-servlet.war
    
    compile.cactus:
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\classes\cactus
    [javac] Compiling 30 source files to \
        C:\study\sakai\lesson1\cactus\servlet\target\classes\cactus
    [javac] 注: \
        C:\study\sakai\lesson1\cactus\servlet\src\test-cactus\org\apache\cactus\sample\TestSampleServlet.java \
        は推奨されない API を使用またはオーバーライドしています。
       [javac] 注: 詳細については、-deprecation オプションを指定して再コンパイルしてください。
    
    test.prepare.logging:
    [touch] Creating \
        C:\study\sakai\lesson1\cactus\servlet\target\logging_client.properties
    [touch] Creating \
        C:\study\sakai\lesson1\cactus\servlet\target\logging_server.properties
    
    test.prepare:
    [cactifywar] Analyzing war: \
        C:\study\sakai\lesson1\cactus\servlet\target\cactus-sample-servlet.war
    [cactifywar] Building war: \
        C:\study\sakai\lesson1\cactus\servlet\target\cactus-sample-servlet-cactified.war \
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\test-reports
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\test-reports\jboss3x
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\test-reports\orion1x
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\test-reports\orion2x
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\test-reports\resin2x
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\test-reports\tomcat4x
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\test-reports\tomcat5x
    [mkdir] Created dir: \
        C:\study\sakai\lesson1\cactus\servlet\target\test-reports\weblogic7x
    
    test:
    [cactus] -----------------------------------------------------------------
      [cactus] Running tests against Tomcat 4.1.27
    [cactus] -----------------------------------------------------------------
    [cactus] Deleting 59 files from \
        c:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cactus\tomcat4x
    [cactus] Deleted 18 directories from \
        c:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cactus\tomcat4x
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestBasicAuthentication
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.844 sec
    
    [cactus] Testsuite: \
        org.apache.cactus.sample.unit.TestClientServerSynchronization
      [cactus] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 7.203 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestCookie
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.64 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestFilterHttpHeaders
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.641 sec
    
      [cactus] ------------- Standard Error -----------------
      [cactus] Rhino classes (js.jar) not found - Javascript disabled
      [cactus] ------------- ---------------- ---------------
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestGlobalBeginEnd
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.625 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestHttpHeaders
      [cactus] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.672 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestHttpParameters
      [cactus] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.656 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestHttpRequest
      [cactus] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.687 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestHttpRequestSpecific
      [cactus] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.672 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestHttpResponse
      [cactus] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.875 sec
    
      [cactus] ------------- Standard Error -----------------
    [cactus] 2004/01/29 9:58:40 org.apache.commons.httpclient.HttpMethodBase \
        processRedirectResponse
      [cactus] 情報: Redirect requested but followRedirects is disabled
      [cactus] ------------- ---------------- ---------------
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestHttpSession
      [cactus] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.781 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestHttpUnitIntegration
      [cactus] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.703 sec
    
      [cactus] ------------- Standard Error -----------------
      [cactus] Rhino classes (js.jar) not found - Javascript disabled
      [cactus] ------------- ---------------- ---------------
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestJspOut
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 7.156 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestJspPageContext
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.609 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestJspTagLifecycle
      [cactus] Tests run: 24, Failures: 0, Errors: 0, Time elapsed: 1.25 sec
    
    [cactus] Testsuite: org.apache.cactus.sample.unit.TestJUnitTestCaseWrapper
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.625 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestRequestDispatcher
      [cactus] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 7.656 sec
    
    [cactus] Testsuite: org.apache.cactus.sample.unit.TestServerSideExceptions
      [cactus] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.688 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestServletConfig
      [cactus] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0.688 sec
    
    [cactus] Testsuite: \
        org.apache.cactus.sample.unit.TestServletRedirectorOverride
      [cactus] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 0.641 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestSetUpTearDown
      [cactus] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.625 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestSetURL
      [cactus] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.719 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.unit.TestTearDownException
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.625 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.TestSampleBodyTag
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.625 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.TestSampleFilter
      [cactus] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 0.656 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.TestSampleServlet
      [cactus] Tests run: 13, Failures: 0, Errors: 0, Time elapsed: 0.922 sec
    
      [cactus] ------------- Standard Error -----------------
    [cactus] 2004/01/29 9:59:21 org.apache.commons.httpclient.HttpMethodBase \
        processResponseHeaders
    [cactus] 警告: Cookie rejected: "$Version=0; responsecookie=this is a \
        response cookie; $Domain=jaka
    rta.apache.org". Illegal domain attribute "jakarta.apache.org". Domain of \
        origin: "localhost"
      [cactus] ------------- ---------------- ---------------
      [cactus] Testsuite: org.apache.cactus.sample.TestSampleServletConfig
      [cactus] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.625 sec
    
      [cactus] Testsuite: org.apache.cactus.sample.TestSampleTag
      [cactus] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.734 sec
      [junitreport] Using Xalan version: Xalan Java 2.4.1
      [junitreport] Transform time: 531ms
      [junitreport] Using Xalan version: Xalan Java 2.4.1
      [junitreport] Transform time: 171ms
      [junitreport] Using Xalan version: Xalan Java 2.4.1
      [junitreport] Transform time: 157ms
      [junitreport] Using Xalan version: Xalan Java 2.4.1
      [junitreport] Transform time: 172ms
      [junitreport] Using Xalan version: Xalan Java 2.4.1
      [junitreport] Transform time: 3391ms
      [junitreport] Using Xalan version: Xalan Java 2.4.1
      [junitreport] Transform time: 109ms
      [junitreport] Using Xalan version: Xalan Java 2.4.1
      [junitreport] Transform time: 141ms
    
    dist:
        [copy] Copying 1 file to C:\study\sakai\lesson1\cactus\servlet\dist
    
    BUILD SUCCESSFUL
    Total time: 1 minute 48 seconds
    

自分で試してみる。

まずはJunitの復習

以下のソースが試すクラス(非常に単純なクラス)。

/**
 * 単なる,与えられた数まで×るクラス
 * @author chikkun
 * @version 0.1
 * FactorialCalculator.java
 *
 */
public class FactorialCalculator {
    private int result;
    public int factorial(int n) {
        if (n == 0) {
            return 1;
        }
        result = 1;
        for (int i = 2; i <= n; i++) {
            result *= i;
        }
        return result;
    }
}

以下が,上記のクラスをチェックするjunitのクラス。

/**
 *
 * @author chikkun
 * @version 0.1
 * FactorialCalculator.javaのテスト
 *
 */
public class TestFactorialCalculator extends TestCase{
    private FactorialCalculator obj = null;
    //おきまりのコンストラクタ
    public TestFactorialCalculator(String name){
        super(name);    
    }
    //チェック前(FactorialCalculatorオブジェクトだけを取得している)
    protected void setUp(){
            obj = new FactorialCalculator();
    }
    //これがテスト本体1
    public void testFactorial5(){
            assertEquals(obj.factorial(5),120);
    }
    //これがテスト本体2
    public void testFactorial0(){
        assertEquals(obj.factorial(0),1);
    }
    //テストスイート
    public static Test suite(){
        TestSuite suite = new TestSuite("特定のホストを実行");
        suite.addTest(new TestFactorialCalculator("testFactorial0"));
        suite.addTest(new TestFactorialCalculator("testFactorial5"));
        return suite;
    }
}

とうとう自分のCactus実験

  • 実験したいソース
    • ログイン用のservlet
    • userNameとpasswordとpasswordAgainとageを入力さたものを受け取る。
    • 今回は単純に、受け取った値がnullじゃなく、ageが整数で、passwordとpasswordAgainが同じだったらOKとしている。
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UserRegistServlet extends HttpServlet {
   public void doPost(
       HttpServletRequest request,
       HttpServletResponse response)
       throws IOException {
       if (validate(request)) {//requestの値をvalidateさせてOKならlogin.jsp
           response.sendRedirect("login.jsp");
       } else {//だめだったらregistError.jsp
           response.sendRedirect("registError.jsp");
       }
   }
   public boolean validate(HttpServletRequest request) {
       String userName = request.getParameter("userName");
       String password = request.getParameter("password");
       String passwordAgain = request.getParameter("passwordAgain");
       String age = request.getParameter("age");

       boolean isCorrectAge = false;
       try {//整数ならOK
           Integer.parseInt(age);
           isCorrectAge = true;
       } catch (NumberFormatException ex) {
           ;
       }

       return (//nameはnullじゃなきゃOK
           userName != null
               && userName.length() > 0
               && userName.length() < 10)
           && (password != null//passwordもnullじゃなきゃOK
               && password.length() > 0
&& password.equals(passwordAgain))//password=password2が同じならOK
           && isCorrectAge;
   }
 }

テストクラス作成

package cactustest;
import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
/**
 *
 * @author chikkun
 * @version 0.1
 * TestUserRegistServlet.java
 *
 */
public class TestUserRegistServlet extends ServletTestCase{
    public TestUserRegistServlet(String name) {
        super(name);
    }

    public void beginValidateInputOK(WebRequest webrequest) {
        webrequest.addParameter("userName", "motomatu");
        webrequest.addParameter("password", "itboost");
        webrequest.addParameter("passwordAgain", "itboost");
        webrequest.addParameter("age", "28");
    }
    public void testValidateInputOK() {
        UserRegistServlet servlet = new UserRegistServlet();
        assertTrue(servlet.validate(request));
    }

    public void beginValidateInputNG(WebRequest webrequest) {
        webrequest.addParameter("userName", "motomatu");
        webrequest.addParameter("password", "itboost");
        webrequest.addParameter("passwordAgain", "utboost");
        webrequest.addParameter("age", "28");
    }
    public void testValidateInputNG() {
        UserRegistServlet servlet = new UserRegistServlet();
        assertTrue(!servlet.validate(request));
    }
}

http://localhost/sakai2/ServletTestRunner?suite=cactustest.TestAll&xsl=cactus-report.xsl [2004-01-28 18:32]