Error
org.apache.catalina.core.StandardWrapperValve.invoke servlet [org.javaee7.jaxrs.serversentevent.MyApplication]的Servlet.service()在路径[/broadcast-0.0.1-SNAPSHOT]的上下文中抛出异常[Servlet执行引发具有根本原因的异常java.lang.AbstractMethodError:javax.ws.rs.core.UriBuilder.uri(Ljava / lang / String;)Ljavax / ws / rs / core / UriBuilder;在javax.ws.rs.core.UriBuilder.fromUri(UriBuilder.java:119)的com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:669)javax.servlet.http.HttpServlet .service(HttpServlet.java:725)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org . apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)atg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase . java:503)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:74)at org.apache.catalina.valves .AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)atg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal) ve.java:88)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015)org.apache.coyote .AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:652)org.apache.coyote.http11.Http11NioProtocol $ Http11ConnectionHandler.process(Http11NioProtocol.java:222)at org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1575)位于java.util.concurrent的java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)的org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1533) java.lang.Thread.run中的.ThreadPoolExecutor $ Worker.run(未知来源)(未知来源)
POM.xml
junit
junit
3.8.1
test
org.glassfish.jersey.media
jersey-media-sse
2.0-m13-2
com.sun.jersey
jersey-servlet
1.19
My tomcat version is 8.0.
Java code:
import javax.ws.rs.ApplicationPath;
import org.glassfish.jersey.media.sse.SseFeature;
import org.glassfish.jersey.server.ResourceConfig;
@ApplicationPath("webresources")
public class MyDemo extends ResourceConfig {
public MyDemo() {
super(MyResource.class, SseFeature.class);
}
}
.
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.media.sse.EventOutput;
import org.glassfish.jersey.media.sse.OutboundEvent;
import org.glassfish.jersey.media.sse.SseBroadcaster;
import org.glassfish.jersey.media.sse.SseFeature;
@Path("test")
public class MyResource {
private static final SseBroadcaster BROADCASTER = new SseBroadcaster();
@GET
@Path("hello")
@Produces(SseFeature.SERVER_SENT_EVENTS)
public EventOutput itemEvents() {
final EventOutput eventOutput = new EventOutput();
BROADCASTER.add(eventOutput);
return eventOutput;
}
@POST
public void addItem(e) {
BROADCASTER.broadcast(new OutboundEvent.Builder().data(String.class, "hello").build());
}
}