2017-11-07 4 views
0

Eigentlich bin ich völlig neu in Web-Service-Entwicklung. Ich bin nicht in der Lage, einfache dynamische Web-Service-Anwendung mit Eclipse Sauerstoff, Tomcat 7, Jersey-Bibliothek zu betreiben. Ich weiß, dass es so viele Lösungen gibt, die ich ausprobiert habe, aber nichts funktioniert für mich, ich bin nicht in der Lage herauszufinden, wo ich Fehler mache.Web-Service mit Tomcat funktioniert nicht

das ist meine Klasse.

package book; 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
@Path("/book") 
public class Book { 
@GET 
@Produces(MediaType.TEXT_XML) 
public String sayHelloXML(){ 
    String response = "<?xml version='1.0'?>"+ 
      "<hello>Hello XML</hello>"; 
    return response; 
} 
} 

Dies ist die web.xml-Datei.

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
<display-name>WSdemo</display-name> 
<welcome-file-list> 
<welcome-file>index.html</welcome-file> 
<welcome-file>index.htm</welcome-file> 
<welcome-file>index.jsp</welcome-file> 
<welcome-file>default.html</welcome-file> 
<welcome-file>default.htm</welcome-file> 
<welcome-file>default.jsp</welcome-file> 
</welcome-file-list> 


<servlet> 
<servlet-name>JAVA WS</servlet-name> 
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 

<init-param> 
<param-name>jersey.config.server.provider.packages</param-name> 
<param-value>book</param-value> 
</init-param> 

<load-on-startup>1</load-on-startup> 

</servlet> 

<servlet-mapping> 
<servlet-name>JAVA WS</servlet-name> 
<url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 

</web-app> 

ich einige Störung erhalte, aber ich bin nicht in der Lage

Nov 07, 2017 1:35:11 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre1.8.0_151\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_151/bin/server;C:/Program Files/Java/jre1.8.0_151/bin;C:/Program Files/Java/jre1.8.0_151/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Users\sesatuser\.dnx\bin;C:\Program Files\Microsoft DNX\Dnvm\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files (x86)\Microsoft Emulator Manager\1.0\;C:\Program Files (x86)\nodejs\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Java\jdk1.8.0_144;;C:\Users\sesatuser\Desktop;;. 
Nov 07, 2017 1:35:12 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:WSdemo' did not find a matching property. 
Nov 07, 2017 1:35:12 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Nov 07, 2017 1:35:12 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Nov 07, 2017 1:35:12 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 1031 ms 
Nov 07, 2017 1:35:12 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Nov 07, 2017 1:35:12 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47 
Nov 07, 2017 1:35:16 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom 
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [152] milliseconds. 
Nov 07, 2017 1:35:16 PM org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(C:\Users\sesatuser\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\WSdemo\WEB-INF\lib\el-api-2.2.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class 
Nov 07, 2017 1:35:16 PM org.apache.catalina.loader.WebappClassLoader validateJarFile 
INFO: validateJarFile(C:\Users\sesatuser\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\WSdemo\WEB-INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 
Nov 07, 2017 1:35:16 PM org.apache.catalina.startup.ContextConfig processAnnotationsJar 
SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/sesatuser/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/WSdemo/WEB-INF/lib/javax.json-api-1.1.jar!/] for annotations 
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 
    at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133) 
    at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976) 
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Nov 07, 2017 1:35:20 PM org.apache.catalina.startup.ContextConfig processAnnotationsJar 
SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/sesatuser/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/WSdemo/WEB-INF/lib/yasson-1.0.jar!/] for annotations 
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 
    at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133) 
    at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976) 
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Nov 07, 2017 1:35:20 PM org.apache.catalina.startup.ContextConfig processAnnotationsJar 
SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/sesatuser/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/WSdemo/WEB-INF/lib/javax.json.bind-api-1.0.jar!/] for annotations 
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 
    at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133) 
    at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976) 
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Nov 07, 2017 1:35:20 PM org.apache.catalina.startup.ContextConfig processAnnotationsJar 
SEVERE: Unable to process Jar entry [module-info.class] from Jar [jar:file:/C:/Users/sesatuser/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/WSdemo/WEB-INF/lib/javax.json-1.1.jar!/] for annotations 
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 
    at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:133) 
    at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) 
    at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2134) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:2010) 
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1976) 
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1961) 
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1319) 
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Nov 07, 2017 1:35:21 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
Nov 07, 2017 1:35:21 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Nov 07, 2017 1:35:21 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 9679 ms 

ich diese URL bin mit

http://localhost:8080/WSdemo/rest/book/sayHelloXML/ 

Ausgabe im Browser zu lösen output

Antwort

0

Die Protokolle zeigen, dass einige Abhängigkeiten müssen noch aufgelöst werden (wie javax.json-api-1.1.jar, yasson-1.0.jar) Versuchen Sie, diese Jar hinzuzufügen s im Klassenpfad. Außerdem haben Sie das Mapping '/ sayHelloXML' für die Funktion sayHelloXML() nicht zur Verfügung gestellt.

0

Von diesem bugHauptseite: Tomcat should skip or handle module-info.class when scanning for annotations, können Sie sehen, dass der Fehler die gleiche ist:

SEVERE: Unable to process Jar entry [module-info.class] from Jar [file:...../javax.json-1.1.0-M1.jar] for annotations 
org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 
at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:97) 
at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:54) 
at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:174) 
at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:83) 

Job im Gange war:

Obwohl Tomcat Code unabhängig von BCEL aktualisiert werden können, wir muss wissen, was der Code "19" bedeutet und damit wie viele Bytes zu überspringen (für die einfachen Fall, wenn es ignoriert werden kann).

und

19 CONSTANT_Module ist und 20 ist CONSTANT_Package.

Ich sehe keinen Grund, Modul-Info für Anmerkungen überhaupt zu scannen. @WebServlet, @WebFilter oder @WebListener wird hier sowieso nicht erwartet.

und

Sieht aus wie wir nur 2 Bytes überspringen müssen. Die Änderung muss in Commons BCEL zuerst implementiert und dann zurück zu Tomcat portiert werden.

und schließlich hat der Fehler in folgenden Versionen behoben:

BCEL aktualisiert und Back-Port abgeschlossen.

    für 9.0.0
  • Stamm:

    in behoben.M18 ab

  • 8.5.x für 8.5.12 ab

  • 8.0.x für 8.0.42 ab

  • 7.0.x für 7.0.76 ab

Wenn Sie also bei Tomcat 7 bleiben möchten, müssen Sie mindestens auf Version 7.0.76 aktualisieren.

Verwandte Themen