嵌入式Jetty+2 Jersey Servlet:无法同时加载



请帮忙

我遇到了一个关于Embedded Jetty在2个类中运行2个Jersey Servlet的配置问题,包条目。它从Eclipse中运行,但当作为可运行的jar文件导出一次时,我得到的错误是:500,这是第二次运行。这是Maven项目,我用来创建可运行jar的工具是<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId>

而服务器点配置如下:

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
context.setContextPath("/");
HttpConfiguration https = new HttpConfiguration();
https.addCustomizer(new SecureRequestCustomizer());
ServerConnector connector = new ServerConnector(jettyServer);
connector.setPort(10001);
jettyServer.setConnectors(new Connector[] { connector });
jettyServer.setHandler(context);
ServletHolder jerseyServletEntry = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class,
"/entry/*");
jerseyServletEntry.setInitOrder(0);
jerseyServletEntry.setInitParameter("jersey.config.server.provider.classnames",
EntryPoint.class.getCanonicalName());
EntryPoint.logger.info("Server is starting up... ");
ServletHolder jerseyServletNoEntry = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class,
"/noentry/*");
jerseyServletNoEntry.setInitOrder(1);
jerseyServletNoEntry.setInitParameter("jersey.config.server.provider.classnames",
NoEntryPoint.class.getCanonicalName());
NoEntryPoint.logger.info("Server is starting up... ");

我收到的邮差错误:

<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" />
<title>Error 500 </title>
</head>
<body>
<h2>HTTP ERROR: 500</h2>
<p>Problem accessing /entry/input//7858/768434. Reason:
<pre>    Request failed.</pre>
</p>
<hr /><i><small>Powered by Jetty://</small></i>
</body>

提醒:它在Eclipse中运行良好,使用java-jar命令在控制台中运行时不会列出任何错误。

我通过更改ServerPoint中的配置解决了这个问题,如下所示:

代替:

ServletHolder jerseyServletEntry = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class,
"/entry/*");
jerseyServletEntry.setInitOrder(0);
jerseyServletEntry.setInitParameter("jersey.config.server.provider.classnames",
EntryPoint.class.getCanonicalName());
EntryPoint.logger.info("Server is starting up... ");
ServletHolder jerseyServletNoEntry = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class,
"/noentry/*");
jerseyServletNoEntry.setInitOrder(1);
jerseyServletNoEntry.setInitParameter("jersey.config.server.provider.classnames",
NoEntryPoint.class.getCanonicalName());
NoEntryPoint.logger.info("Server is starting up... ");

我写道:

ServletHolder jerseyServletEntry = context.addServlet(org.glassfish.jersey.servlet.ServletContainer.class,
"/api/*");
jerseyServletEntry.setInitOrder(0);
jerseyServletEntry.setInitParameter("jersey.config.server.provider.classnames",
"entry.EntryPoint, entry.NoEntryPoint"); //upload both Jersey servlets
ServerPoint.logger.info("Server is starting up... ");

但现在,我发现JCE无法验证提供的BC。尝试了这个解决方案,但没有奏效:bouncycastle错误";JCE不能认证提供者BC";用";带有依赖项的jar";在Eclipse中可以正常工作,但在导出时不能正常工作。知道吗?

最新更新