0

私はMavenプロジェクト構造で埋め込み可能なTomcatを使用しています
(ここのように: https://devcenter.heroku.com/articles/create-a-java-web-application-using-embedded-tomcat )
が、Herokuにデプロイしていません.
(web.xml を追加する前であっても) index.jsp にアクセスできますlocalhost:8080/

試したlocalhost:8080/Archery
試したlocalhost:8080/servlets/servlet.ArcheryShootServlet
試したlocalhost:8080/servlet/servlet.ArcheryShootServlet
試した 試したlocalhost:8080/servlet.ArcheryShootServlet
試したlocalhost:8080/target/Archery
試したlocalhost:8080/target/ArcheryShootServlet
試したlocalhost:8080/target/servlet.ArcheryShootServlet

すでにプロジェクトの一部であったリソースフォルダーにそれらを入れてみました。

プロジェクトの構造

webResources フォルダーを追加して、それを
pom ファイル構成に追加しようとしました:

   <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.heroku.sample</groupId>
  <artifactId>embeddedTomcatSample</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>embeddedTomcatSample Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
    <tomcat.version>7.0.34</tomcat.version>
  </properties>
  <dependencies>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-logging-juli</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jasper</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jasper-el</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-jsp-api</artifactId>
        <version>${tomcat.version}</version>
    </dependency>
    <dependency>
      <groupId>org.swinglabs</groupId>
      <artifactId>swing-layout</artifactId>
      <version>1.0.3</version>
    </dependency>
  </dependencies>
  <build>
    <finalName>embeddedTomcatSample</finalName>
    <plugins>
    <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>1.1.1</version>
        <configuration>
        <webResources>
                    <resource>
                        <directory>WebContent/WEB-INF</directory>
                        <includes>
                            <include>**/*.properties</include>
                            <include>**/*.xml</include>
                            <include>**/*.css</include>
                            <include>**/*.html</include>
                        </includes>
                    </resource>
                </webResources>
        </configuration>
    </plugin>   
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>appassembler-maven-plugin</artifactId>
            <version>1.1.1</version>
            <configuration>
                <assembleDirectory>target</assembleDirectory>
                <programs>
                    <program>
                        <mainClass>launch.ArcheryServer</mainClass>
                        <name>webapp</name>
                    </program>
                </programs>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>assemble</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
  </build>
</project>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
    <servlet>
        <servlet-name>ArcheryShootServlet</servlet-name>
        <servlet-class>servlet.ArcheryShootServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ArcheryShootServlet</servlet-name>
        <url-pattern>/Archery</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>/WEB-INF/index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

context.xml

 <?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/Archery"/>

ArcheryShootServlet.java

    package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(
        name = "Archery", 
        urlPatterns = {"/Archery"}
    )

public class ArcheryShootServlet extends HttpServlet {
protected void processRequest(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
String xmlSent = req.toString();    
System.out.println(xmlSent);
    ServletOutputStream out = resp.getOutputStream();
    PrintWriter test = resp.getWriter();
test.write("hello");
    out.write("hello heroku".getBytes());
out.write(xmlSent.getBytes());

    out.flush();
    out.close();
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. doGet and doPost call processRequest">...

}

4

1 に答える 1

2

アプリケーション コンテキスト パスは/Archery( で定義context.xml)

サーブレット パスも/Archery(urlPatternsのプロパティ@WebServlet) web.xml によっても複製されます

したがって、あなたのURLはlocalhost:8080/Archery/Archery

最初のサーバー[:ポート]、次にコンテキスト パス、次にサーブレット パス

とにかく、これを機能させるには、プロジェクト構造を修正する必要があります。Maven 規則に従っている場合、Web リソース ディレクトリは、src/main/webapp このディレクトリの下の WEB-INF ディレクトリの下に配置する必要がありますweb.xmlcontext.xml

戦争をパッケージ化した後、これらのファイルがそこにあることを確認してください(WEB-INFの下)

于 2013-07-31T10:28:34.690 に答える