2016-10-31 29 views
0

Tomcatディレクトリの下にubuntuにApache Tomcatをインストールしました。エクスポートを介して単一セッションの環境変数をCATALINA_HOMEに設定しました。その後、コマンドラインから$CATALINA_HOME/bin/startup.sh経由でtomcatを起動しました。そしてすべてがうまくいった。私はtomcat公式ページを見て、サーバーが正しくインストールされていると仮定します。それから私はサーブレットアプリケーションは動作しませんが、Tomcatは正しく動作します。

$CATALINA_HOME/webaps/apress/ 

ディレクトリの下に、単一のサーブレットとウェッブアプリケーションを作成しました。

import java.io.*; 
import javax.servlet.ServletException; 
import javax.servlet.http.*; 
public class HelloWorldServlet extends HttpServlet 
{ 
    public void doGet(HttpServletRequest request, 
      HttpServletResponse response) 
      throws IOException, ServletException 
    { 
     response.setContentType("text/html"); 
     PrintWriter out=response.getWriter(); 
     out.println("<html>"); 
     out.println("<head>"); 
     out.println("<title>hello, world</title>"); 
     out.println("</head>"); 
     out.println("<body>"); 
     out.println("<h1> hello world</h1>"); 
     out.println("</body>"); 
     out.println("</html>"); 
    } 
} 

その後、私は、ファイル

javac -cp HelloWorldServlet.java -d ./classes -cp $CATALINA_HOME/bin/servlet-api.jar 

をコンパイルCompillationは成功したとクラスファイルは、アプリケーションのルートディレクトリのclassesサブディレクトリに入れました。

次に、web.xmlファイルを編集しました。

<?xml version ="1.0" encoding ="ISO-8859-1"?> 
<web-app 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_3_0.xsd" version="3.0"> 
    <display-name>Chapter 2</display-name> 
    <description> Apress demo</description> 
    <servlet> 
     <servlet-name>helloworld</servlet-name> 
     <servlet-class>HelloWorldServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>helloworld</servlet-name> 
     <url-pattern>/hello.html</url-pattern> 
    </servlet-mapping> 
</web-app> 

次に、Tomcatを再起動しました。しかし、私がアクセスしようとすると

http://localhost:8080/apress/hello.html 

私はHTTPステータス404メッセージを受け取ります。私は間違って何をしたのですか?

+0

このディレクトリにjavaファイルをコンパイルする必要があることである

あなたは$エコー」と入力できますCATALINA_HOME "と入力して結果をここに入力しますか?また、TomcatとCatalina Homeの下にディレクトリレイアウトを表示できますか? –

答えて

0

まず、NetbeansやEclipseなどのIDEでアプリケーションを構築してから、自動的に生成される構成ファイルを調べることをお勧めします。

0

tomcatディレクトリにlogsディレクトリがあります。 tomcatを止める。すべてのログファイルを削除してtomcatを再起動し、そのURLを押してください。ログを確認します(主にログとcatalina.outにアクセスします)。最初にエラーを探します。

web.xmlを編集する代わりに@WebServletを使用することも考えられます。最新のバージョンのtomcatでは、これで注釈付けされたクラスを識別し、サーブレットとして自動的に登録できます。

@WebServlet(name="HelloWorld", urlPatterns={"/hello.html"}) 
public class HelloWorldServlet extends HttpServlet { 

} 

さらに、このサーブレットをWARファイルとしてどのように配備していますか?

+0

私はディレクトリを見上げて、たくさんのファイルがありました。私はそれらをすべて削除し、カタリナの中を見ました。何も理解していませんでしたが、間違いがありました。それで私を助けることができますか? – olzhabala

+0

ファイルの内容を投稿してください(再起動して1つのURLしか実行していないので、あまり大きすぎてはいけません)。また、.classファイルをTomcatにどうやって取得していますか? WARファイルを作成しているか、または手動でクラスディレクトリにコピーしていますか? – AlexC

+0

SEVERE:19行目のParse Fatal Error列4:要素タイプ "servlet-class"は、一致する終了タグ ""で終了する必要があります。 org.xml.sax.SAXParseException; systemId:jndi:/localhost/apress/WEB-INF/web.xml; lineNumber:19; columnNumber:4;要素タイプ "servlet-class"は一致する終了タグ ""で終了する必要があります。web.xmlを編集しましたが、エラーkeppsが表示されます – olzhabala

0

可能なものは2つあります。あなたが書いたものによると、あなたがアプリケーションを作成したディレクトリは:

$CATALINA_HOME/webaps/apress/ 

は、

$CATALINA_HOME/webapps/apress/ 

のはずだが、私はそれだけでtypeOあると思います。二つ目は、あなたがコンパイルされたファイル

HelloWorldServlet.class 

apress/WEB-INF/classes 

にディレクトリをコピー、または直接

+0

ええ、あなたはwebappsについて正しいと私はクラスディレクトリ – olzhabala

+0

に.classファイルをコンパイルした、あなたは/ HelloWorldServlet.javaの同じディレクトリの下にクラスをコンパイルしました。 CATALINA_HOMEの下にあなたのディレクトリ構造を投稿する必要があります – lonchu

関連する問題