У меня есть работающее приложение JAX-RS на Джерси, и я просто изменил его, чтобы добавить зависимость в один конструктор. Я попытался развернуть его на GlassFish, но затем я получил эту проблему здесь .
Поэтому я подумал о том, чтобы попытаться использовать Tomcat, так как я думаю, что это проблема того, как HK2 и CDI могут конфликтовать друг с другом, но это не сработало и на Tomcat, я получаю эту ошибку, когда развертываю войну. файл:
SEVERE [RMI TCP-соединение (2) -127.0.0.1] org.apache.catalina.startup.ContextConfig.beforeStart Исключение, исправляющее docBase для контекста [/ Gradle ___ com_myproject___webservice_1_0_0_SNAPSHOT_war]
java.io.IOException: Невозможно создать каталог [C: \ Program Files \ Apache Software Foundation \ Tomcat 8.5 \ webapps \ Gradle ___ com_myproject___webservice_1_0_0_SNAPSHOT_war]
в org.apache.catalina.startup.ExpandWar.expand (ExpandWar.java:115)
в org.apache.catalina.startup.ContextConfig.fixDocBase (ContextConfig.java:615)
в org.apache.catalina.startup.ContextConfig.beforeStart (ContextConfig.java:748)
в org.apache.catalina.startup.ContextConfig.lifecycleEvent (ContextConfig.java:301)
в org.apache.catalina.util.LifecycleBase.fireLifecycleEvent (LifecycleBase.java:94)
в org.apache.catalina.util.LifecycleBase.setStateInternal (LifecycleBase.java:395)
в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:149)
в org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:752)
в org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:728)
в org.apache.catalina.core.StandardHost.addChild (StandardHost.java:734)
в org.apache.catalina.startup.HostConfig.manageApp (HostConfig.java:1736)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:498)
в org.apache.tomcat.util.modeler.BaseModelMBean.invoke (BaseModelMBean.java:300)
в com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor.java:819)
в com.sun.jmx.mbeanserver.JmxMBeanServer.invoke (JmxMBeanServer.java:801)
в org.apache.catalina.mbeans.MBeanFactory.createStandardContext (MBeanFactory.java:482)
в org.apache.catalina.mbeans.MBeanFactory.createStandardContext (MBeanFactory.java:431)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:498)
в org.apache.tomcat.util.modeler.BaseModelMBean.invoke (BaseModelMBean.java:300)
в com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke (DefaultMBeanServerInterceptor.java:819)
в com.sun.jmx.mbeanserver.JmxMBeanServer.invoke (JmxMBeanServer.java:801)
в com.sun.jmx.remote.security.MBeanServerAccessController.invoke (MBeanServerAccessController.java:468)
в javax.management.remote.rmi.RMIConnectionImpl.doOperation (RMIConnectionImpl.java:1468)
на javax.management.remote.rmi.RMIConnectionImpl.access $ 300 (RMIConnectionImpl.java:76)
в javax.management.remote.rmi.RMIConnectionImpl $ PrivilegedOperation.run (RMIConnectionImpl.java:1309)
at java.security.AccessController.doPrivileged (собственный метод)
в javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation (RMIConnectionImpl.java:1408)
в javax.management.remote.rmi.RMIConnectionImpl.invoke (RMIConnectionImpl.java:829)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в sun.rmi.server.UnicastServerRef.dispatch: atic) (unicast): 7)sun.rmi.transport.Transport $ 1.run (Transport.java:200) на sun.rmi.transport.Transport $ 1.run (Transport.java:197) на java.security.AccessController.doPrivileged (собственный метод) на солнце.rmi.transport.Transport.serviceCall (Transport.java:196) в sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:573) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0 (TCPTransport.Java: 834) at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $ run $ 0 (TCPTransport.java:688) в java.security.AccessController.doPrivileged (собственный метод) в sun.rmi.transport.tcp.TCPTransport$ ConnectionHandler.run (TCPTransport.java:687) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecu)tor.java:624) at java.lang.Thread.run (Thread.java:748)
Вот моя AbstractBinder
реализация для DI:
public class UsersDependencyBinder extends AbstractBinder {
private static final Logger LOG = LoggerFactory.getLogger(UsersDependencyBinder.class);
@Override
protected void configure() {
try {
// Acts as a Singleton
bind(new UsersDAO(new CachedDbConnector()));
} catch (ClassNotFoundException e) {
LOG.error("Error registering the DB Driver Manager", e);
}
}
}
Вот какЯ вставляю это:
private final UsersDAO dao;
@Inject
public UserResource(UsersDAO dao) {
this.dao = dao;
}
Остальная часть кода раньше работала нормально и является просто ping
, она ничего не делает, я пытаюсь просто заставить работать инфраструктуру (серверы отвечают на вызовы API, базы данныхи до того, как приступить к кодированию.
Я пытался добавить:
implementation ("org.glassfish.jersey.bundles:jaxrs-ri:2.27")
Но это тоже не сработало.