Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / RESTEasy + Guice Could not find constructor for class / 3 сообщений из 3, страница 1 из 1
13.10.2015, 16:33
    #39075807
alleo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RESTEasy + Guice Could not find constructor for class
Здравствуйте.

Пытаюсь запустить Jboss RESTEassy на сервере. Получаю такую ошибку:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
15:20:39,664 WARN  [org.hibernate.jpa.internal.EntityManagerFactoryRegistry] (default task-9) HHH000436: Entity manager factory name (shashki64PU) is already registered.  If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name'
15:20:39,724 ERROR [io.undertow.request] (default task-9) UT005023: Exception handling request to /rus/rest/games: java.lang.RuntimeException: Could not find constructor for class: online.shashki.rus.server.rest.PlayersResourceImpl
	at org.jboss.resteasy.spi.metadata.ResourceBuilder.constructor(ResourceBuilder.java:683)
	at org.jboss.resteasy.plugins.server.resourcefactory.POJOResourceFactory.registered(POJOResourceFactory.java:41)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:207)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:193)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:179)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:156)
	at org.jboss.resteasy.core.ResourceMethodRegistry.addPerRequestResource(ResourceMethodRegistry.java:75)
	at org.jboss.resteasy.spi.ResteasyDeployment.registration(ResteasyDeployment.java:400)
	at org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:241)
	at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:112)
	at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.init(FilterDispatcher.java:42)
	at com.arcbees.guicyresteasy.GuiceRestEasyFilterDispatcher.init(GuiceRestEasyFilterDispatcher.java:28)
	at com.google.inject.servlet.FilterDefinition.init(FilterDefinition.java:112)
	at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:99)
	at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:220)
	at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
	at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:84)
	at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:97)
	at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:79)
	at io.undertow.servlet.core.ManagedFilter.getFilter(ManagedFilter.java:65)
	at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:60)
	at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132)
	at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85)
	at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
	at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
	at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
	at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
	at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
	at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
	at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
	at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
	at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
	at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
	at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
	at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
	at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)



web.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">

    <listener>
        <listener-class>online.shashki.rus.server.guice.GuiceServletConfig</listener-class>
    </listener>

    <filter>
        <filter-name>guiceFilter</filter-name>
        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>guiceFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--<context-param>-->
        <!--<param-name>resteasy.guice.modules</param-name>-->
        <!--<param-value>online.shashki.rus.server.rest.RestModule</param-value>-->
    <!--</context-param>-->

    <!--<context-param>-->
        <!--<param-name>resteasy.guice.stage</param-name>-->
        <!--<param-value>PRODUCTION</param-value>-->
    <!--</context-param>-->

    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>false</param-value>
    </context-param>

    <!-- this should be the same URL pattern as the servlet-mapping property -->
    <context-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/rest</param-value>
    </context-param>

    <!--<servlet>-->
        <!--<servlet-name>Resteasy</servlet-name>-->
        <!--<servlet-class>-->
            <!--org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher-->
        <!--</servlet-class>-->
    <!--</servlet>-->

    <!--<servlet-mapping>-->
        <!--<servlet-name>Resteasy</servlet-name>-->
        <!--<url-pattern>/rest/*</url-pattern>-->
    <!--</servlet-mapping>-->

    <error-page>
        <error-code>500</error-code>
        <location>/500.html</location>
    </error-page>

    <error-page>
        <error-code>404</error-code>
        <location>/404.html</location>
    </error-page>

    <session-config>
        <session-timeout>-1</session-timeout>
    </session-config>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>



PlayersResourceImpl.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;

@Singleton
public class PlayersResourceImpl implements PlayersResource {
  private final Provider<PlayerDao> playerDaoProvider;
  private final Provider<HttpServletRequest> requestProvider;

  @Inject
  PlayersResourceImpl(
      Provider<PlayerDao> playerDaoProvider
      /*HttpServletRequest requestProvider*/) {
    this.playerDaoProvider = playerDaoProvider;
    this.requestProvider = null;
  }
}



RestModule.java
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class RestModule extends AbstractModule {
  @Override
  protected void configure() {
    bind(JacksonProvider.class).in(Singleton.class);

    bind(GamesResource.class).to(GamesResourceImpl.class);
    bind(PlayersResource.class).to(PlayersResourceImpl.class);

    install(new FactoryModuleBuilder()
        .implement(GameResource.class, GameResourceImpl.class)
        .build(ResourcesFactory.class));
  }
}



Как я понял проблема в том, что RESTEasy ожидает конструктор без параметров, либо аннотированные параметры, но Inject не делает. Я пробовал отключать и включать аттрибут автоскана, но безрезультатно. Так же прописывал RestModule.java последовательно в web.xml и в Guice.
Кто-нибудь сталкивался с такой ошибкой?
...
Рейтинг: 0 / 0
13.10.2015, 16:51
    #39075835
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RESTEasy + Guice Could not find constructor for class
Попробуйте просто добавить конструктор без аргументов. Возможно, он нужен для сериализации или еще чего.
http://stackoverflow.com/a/21470977
...
Рейтинг: 0 / 0
13.10.2015, 17:25
    #39075876
alleo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RESTEasy + Guice Could not find constructor for class
Blazkowicz,

Спасибо, вопрос решён.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / RESTEasy + Guice Could not find constructor for class / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]