簡體   English   中英

com.sun.jersey.server.impl.application.WebApplicationImpl _handleRequest

[英]com.sun.jersey.server.impl.application.WebApplicationImpl _handleRequest

我正在構建一個JAX-RS項目,該項目使用配置文件重定向到我定義了HTTP方法的郵件類。 在調試時,控件轉到配置文件,如下所示:

package com.ODSResrcSysApp;

import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.core.Application;

public class ODSResrcSysConfig extends Application 
{
    public Set<Class<?>> getClasses() {
        Set<Class<?>> classes = new HashSet<Class<?>>();
        classes.add(ODSResrcSysSvcREST.class);
        return classes;
    }
}

從這里開始,控件應該轉到ODSResrcSysSvcREST.class,其中uri模式的定義如下。

package com.ODSResrcSysApp;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Clob;
import java.sql.ResultSet;
import java.util.Properties;

import javax.ws.rs.GET;
import javax.ws.rs.MatrixParam;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/*")
public class ODSResrcSysSvcREST 
{
    @GET
    @Path("/Test")
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public String gettstCon() throws WebApplicationException
    {
        System.out.println("Entering gettstCon method.");

        String result = null;
        ODSConnection odsconn = new ODSConnection();

        try
        {
            result = odsconn.connect();
            if(result == "connection successful")
            {
                result = "<ResourceSystem>Connection established successfully</ResourceSystem>";
            }
            else
            {
                result = "<Error>Error occured while establishing connection. If issues persists, contact CTS SOA team.</Error>";
            }
        }
        catch (Exception ex)
        {
            result = ex.getMessage().toString();
        }
        return result;
    }

}

此時出現以下錯誤:

com.sun.jersey.server.impl.application.WebApplicationImpl _handleRequest
SEVERE: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
Throwable occurred: java.lang.StringIndexOutOfBoundsException
    at java.lang.String.substring(String.java:1093)
    at com.sun.jersey.server.impl.application.WebApplicationContext.pushRightHandPathLength(WebApplicationContext.java:282)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:130)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:736)
Sep 21, 2012 2:02:28 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet ODS Resource System JAX-RS REST Service threw exception
Throwable occurred: java.lang.StringIndexOutOfBoundsException
    at java.lang.String.substring(String.java:1093)
    at com.sun.jersey.server.impl.application.WebApplicationContext.pushRightHandPathLength(WebApplicationContext.java:282)
    at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:130)
    at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
    at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
    at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
    at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:736)

此項目的web.xml如下所示

<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>ODS_ResrcSysApp</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>ODS Resource System JAX-RS REST Service</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>javax.ws.rs.Application</param-name>
      <param-value>com.ODSResrcSysApp.ODSResrcSysConfig</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>ODS Resource System JAX-RS REST Service</servlet-name>
    <url-pattern>/*</url-pattern>
  </servlet-mapping>
</web-app>

不確定導致錯誤的是什么。 即使它使用相同的jar文件集,同一工作空間中的另一個JAX-RS項目也能正常工作。 通過代碼調試時我也會看到以下頁面:

DeferredResourceConfig.class

The source attachment does not contain the source fir the file DeferredResourceConfig.class .......

我的項目中包含的jar文件列表是:

 1.  asm-3.1.jar 
 2.  cloveretl.engine.jar 
 3.  commons-lang.jar 
 4.  ibm-wink-jaxrs.jar
 5.  jackson-core-asl-1.8.3.jar 
 6.  jackson-jaxrs-1.8.3.jar
 7.  jackson-mapper-asl-1.8.3.jar 
 8.  jackson-xc-1.8.3.jar
 9.  jersey-client-1.9.1.jar 
 10. jersey-core-1.9.1.jar 
 11. jersey-json-1.9.1.jar
 12. jersey-server-1.9.1.jar 
 13. jettison-1.1.jar 
 14. jsr311-api.jar
 15. jsr311-api-1.1.1.jar 
 16. madapi.jar 
 17. slf4j-api.jar 
 18. slf4j-jdk14.jar

非常感謝您的回答。 先感謝您。

@Path("/*")更改為@Path("/") 你可以給那里的則表達*無效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM