简体   繁体   English

配置jax-rs Web服务

[英]configuration jax-rs web service

I am trying to implement a jax-rs web service using jersey framework. 我正在尝试使用Jersey框架实现jax-rs Web服务。 I have written the web service but I don't fully understand what the web.xml tags.so I don't know if I have configured it correct but when I try to access the service I get an error. 我已经编写了Web服务,但是我不完全了解web.xml标签是什么。所以我不知道我是否正确配置了它,但是当我尝试访问该服务时出现错误。 Here is the web service: 这是Web服务:

package com.Test.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Application;
@Path("/demo")
public class DemoService extends Application
{
    @GET
    @Path("/welcome")
    @Produces("text/html")
    public String sayWelcome()
    {
        return "welcome.."; 
    }
}

web.xml:- 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" 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">
<servlet>
    <servlet-name>rest</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer
    </servlet-class>
    <init-param>
         <param-name>com.sun.jersey.config.property.packages</param-name>
         <param-value>com.Test.rest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet> 
<servlet-mapping>
    <servlet-name>rest</servlet-name>
    <url-pattern>/resorces/*</url-pattern>

getting error:- 出现错误:-

java.lang.AbstractMethodError: javax.ws.rs.core.UriBuilder.uri(Ljava/lang/String;)Ljavax/ws/rs/core/UriBuilder;
    at javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)
    at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:669)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

AbstractMethodError are thrown when an application tries to call an abstract method. 当应用程序尝试调用抽象方法时,将引发AbstractMethodError。

uri is an abstract method in UriBuilder, so you need an implementation of this. uri是UriBuilder中的抽象方法,因此您需要一个实现。 This method (with String parameter) is from version 2.0 of JAX-RS specification. 此方法(带有String参数)来自JAX-RS规范的2.0版。

You're trying to use JAX-RS 2.0 with Jersey 1. . 您正在尝试将JAX-RS 2.0与Jersey 1配合使用 Instead, you need to use Jersey 2. that implements JAX-RS 2.0 and contains an implementation to uri method. 相反,您需要使用实现JAX-RS 2.0并包含uri方法实现的Jersey 2

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM