Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Παίδες θέλω μια μιιικρή βοήθεια με servlets.

 

Κατ' αρχας να σημειώσω ότι κάνω compile με Maven και ευθεύς εξ' αρχής σας δίνω το pom.xml:

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>web</groupId>
  <artifactId>simple-servlet</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>simple-servlet Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
         <groupId>javax.servlet</groupId>
         <artifactId>javax.servlet-api</artifactId>
         <version>3.0.1</version>
         <scope>provided</scope>
    </dependency>
  </dependencies>
  <build>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>2.3.2</version>
          <configuration>
              <source>1.7</source>
              <target>1.7</target>
          </configuration>
        </plugin>
      </plugins>
     <finalName>simple-servlet</finalName>
  </build>
</project>

Και την Δομή του Project (προ compile):

.
├── pom.xml
├── simple-servlet.iml
└── src
    └── main
        ├── java
        │   └── test
        │       └── Test.java
        ├── resources
        └── webapp
            ├── index.jsp
            └── WEB-INF
                └── web.xml

Όταν κάνω compile επιτυχώς η δομή γίνεται έτσι:

pcmagas@dimitris:~/Kwdikas/java/simple-servlet$ tree
.
├── pom.xml
├── simple-servlet.iml
├── src
│   └── main
│       ├── java
│       │   └── test
│       │       └── Test.java
│       ├── resources
│       └── webapp
│           ├── index.jsp
│           └── WEB-INF
│               └── web.xml
└── target
    ├── classes
    │   └── test
    │       └── Test.class
    ├── generated-sources
    │   └── annotations
    ├── maven-archiver
    │   └── pom.properties
    ├── simple-servlet
    │   ├── index.jsp
    │   ├── META-INF
    │   └── WEB-INF
    │       ├── classes
    │       │   └── test
    │       │       └── Test.class
    │       └── web.xml
    ├── simple-servlet.war
    └── surefire

Και παράγεται το simple-servlet.war, που περιέχει τα εξής αρχεία:

pcmagas@dimitris:~/Kwdikas/java/simple-servlet/target$ jar tvf ./simple-servlet.war 
     0 Sat Mar 07 21:19:38 EET 2015 META-INF/
   126 Sat Mar 07 21:19:36 EET 2015 META-INF/MANIFEST.MF
     0 Sat Mar 07 21:19:36 EET 2015 WEB-INF/
     0 Sat Mar 07 21:19:36 EET 2015 WEB-INF/classes/
     0 Sat Mar 07 21:19:36 EET 2015 WEB-INF/classes/test/
   128 Sun Mar 01 13:05:04 EET 2015 index.jsp
   463 Sat Mar 07 21:08:54 EET 2015 WEB-INF/web.xml
   925 Sat Mar 07 21:19:34 EET 2015 WEB-INF/classes/test/Test.class
     0 Sat Mar 07 21:19:38 EET 2015 META-INF/maven/
     0 Sat Mar 07 21:19:38 EET 2015 META-INF/maven/web/
     0 Sat Mar 07 21:19:38 EET 2015 META-INF/maven/web/simple-servlet/
  1200 Sat Mar 07 19:56:40 EET 2015 META-INF/maven/web/simple-servlet/pom.xml
   109 Sat Mar 07 21:19:36 EET 2015 META-INF/maven/web/simple-servlet/pom.properties

Δηλαδή σε απλά Ελληνικά βάζει το .class εντός το WEB-INF/classes.

 

Και το Test.class έχει το εξής περιεχόμενο:

package test;

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

class Test extends HttpServlet
{
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        response.setContentType("text/plain;charset=UTF-8");
        PrintWriter out=response.getWriter();

        out.println("Hello");
    }
}

Και για να μπορούμε να το σερβίρουμε το web.xml έχει:

<!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>
  <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>Test</servlet-name>
        <servlet-class>test.Test</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

Αλλά όταν το κάνω deploy στον tomcat δίνω το url http://localhost:8080/simple-servlet/test και παίρνω τα εξής στον Browser μου:

type Exception report

message Error instantiating servlet class test.Test

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class test.Test
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	java.lang.Thread.run(Thread.java:745)

root cause

java.lang.IllegalAccessException: Class org.apache.catalina.core.DefaultInstanceManager can not access a member of class test.Test with modifiers ""
	sun.reflect.Reflection.ensureMemberAccess(Reflection.java:109)
	java.lang.Class.newInstance(Class.java:373)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	java.lang.Thread.run(Thread.java:745)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.52 (Ubuntu) logs.

Έχετε ιδέα τις πταίει;

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...