私はRestEasyを埋め込みTomcatで使用して、いくつかのRest APIを展開する実行可能なjarファイルをエクスポートします(テストのためにSpringBootを使用したくありません)。 私はHttpServletDispatcher 埋め込みTomcatのRestEasyはコントローラをスキャンしません
public class Main {
public static void main(String[] args) throws Exception {
try {
new Main().run();
} catch (Throwable t) {
t.printStackTrace();
}
}
public void run() throws Exception {
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
Context ctx = tomcat.addContext("/", new File(".").getAbsolutePath());
String contextPath = "/";
String appBase = ".";
tomcat.getHost().setAppBase(appBase);
tomcat.addWebapp(contextPath, appBase);
Tomcat.addServlet(ctx, "rest-easy-servlet", new HttpServletDispatcher());
ctx.addServletMapping("/*", "rest-easy-servlet");
tomcat.start();
tomcat.getServer().await();
}
}
サーバーを登録するには、メインエントリポイントでいくつかのコードを記述してきた成功したがいずれかののREST APIなしで起動します。 localhost:8080/users/helloのパスにアクセスすると、ログにエラーが発生しました。 ProtocolHandler [ "HTTP-NIO-8080"] 2017年11月9日2時21分30秒PMを開始 :
2017年11月9日午前2時21分22秒PMはINFOを開始org.apache.coyote.AbstractProtocol org.jboss.resteasy.core.ExceptionHandler SEVERE: http://localhost:8080/users/hello org.jboss.resteasy.core.registry.ClassNode.match で(ClassNode:フルパスのためのリソースが見つかりませんでした: javax.ws.rs.NotFoundExceptionの実行に失敗しました.java:73) at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) at org.jboss.resteasy.core.ResourceMethodR org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.javaでegistry.getResourceInvoker org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234)で(ResourceMethodRegistry.java:444) 。 171) でorg.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) でorg.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java: (HttpServlet.java:790)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) でorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.catalina.coreで org.apache.catalina.authenticator.AuthenticatorBase.invokeで.StandardWrapperValve.invoke org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)で(StandardWrapperValve.java:217) (AuthenticatorBase.java :502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve。起動 org.apache.catalina.connector.CoyoteAdapter.serviceでorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) で(ErrorReportValve.java:79) (CoyoteAdapter.java:518) でorg.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:673) で org.apache.tomcatでで org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456) で.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor。Javaの:1142) org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.runで java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) (TaskThread.java:61)で
java.lang.Thread.run(Thread.java:745)で私はRESTEasyには、そのコンポーネントをスキャンする任意の信号を持っていないと思います。 RestEasyのコンポーネントをスキャンする方法や、登録する方法を助けてください。
ええ、あなたの助けが私に多くの時間を節約できます。私の残りのAPIは今働きます。 – duykaka