繁体   English   中英

如果从JAR启动,Jetty + Jersey嵌入式服务器将无法工作

[英]Jetty + Jersey embeded server not working if launched from JAR

我正在尝试从一个类启动Jetty服务器。 当我尝试从Eclipse运行它时,它工作正常。 如果我将其嵌入JAR,则码头服务器会启动,但是当我发出请求时,它将返回500代码响应。 这是我的课:

@GET
    @Path("test")
    @Produces(MediaType.APPLICATION_JSON)
    public String echo(@QueryParam("testParam")String test){
        return test;
    }

    private Server server; 

    public synchronized void start(int port) throws Exception {
        if (server != null) {
                throw new IllegalStateException("Server is already running");
            }

            ServletContextHandler context = new ServletContextHandler();
            context.setContextPath("/");
        Map<String,Object> initMap = new HashMap<String, Object>();
        initMap.put("com.sun.jersey.api.json.POJOMappingFeature", "true");
        initMap.put("com.sun.jersey.config.property.packages", "the.class.package");           
        context.addServlet(new ServletHolder(new ServletContainer(new PackagesResourceConfig(initMap))), "/*");

        this.server = new Server(port);
        this.server.setHandler(context);
        this.server.start();                   
    }

       public static void main(String[] args) throws Exception {
        if(args.length != 1) {
                System.out.println("AnnotatorServer <port>");
                System.exit(-1);
        }
        JettyServer server = new JettyServer();        
        server.start(Integer.parseInt(args[0]));
    }

当我尝试将其嵌入JAR中启动时,服务器启动,但是当我访问该方法时,出现以下异常:

    Caused by: com.sun.jersey.api.MessageException: A message body writer for Java   class java.lang.String, and Java type class java.lang.String, and MIME media     type application/octet-stream was not found

你知道为什么会这样吗? 谢谢!

问题出在POM文件上。 该依赖关系覆盖了Meta-Inf / service中的某些文件。 找到仅在将验钞机组装到单个罐子中时才抛出的Jersey异常的解决方案

暂无
暂无

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

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