Не могу развернуть Джерси с HK2 в Tomcat - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть работающее приложение 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")

Но это тоже не сработало.

1 Ответ

0 голосов
/ 02 апреля 2019

Ответ довольно прост, но не документирован.

У меня Tomcat работает локально в Windows, установлен с установщиком Windows, он будет находиться в папке Program File, которая имеет защиту от записи для обычных пользователей, поэтому IntelliJ IDEA не смог развернуть мой файл war в webapps папка.

Есть два способа исправить это:

  1. Измените разрешение папки webapp, чтобы разрешить запись от пользователей.
  2. Изменение установленной по умолчанию папки webapp внутри server.xml в установке Tomcat.
...