java.lang.IllegalArgumentException: создание FactoryDescriptors должно иметь Factory в качестве контракта первого аргумента

#rest #jersey #glassfish #jax-rs

#rest #джерси #glassfish #jax-rs

Вопрос:

Я новичок в веб-сервисах и REST и пытаюсь создавать службы REST поверх существующих Java-проектов. Получаю следующую ошибку, когда я развертываю приложение и пытаюсь получить к нему доступ. Проверил другие вопросы в stackoverflow, но не смог найти никаких ответов. Любая помощь приветствуется.

     SEVERE: Allocate exception for servlet jersey-serlvet
    java.lang.IllegalArgumentException: Creation of FactoryDescriptors must have Factory as a contract of the first argument

        at org.glassfish.hk2.utilities.FactoryDescriptorsImpl.<init>

(FactoryDescriptorsImpl.java:78)
    at org.glassfish.hk2.utilities.binding.AbstractBindingBuilder$FactoryTypeBasedBindingBuilder.complete(AbstractBindingBuilder.java:454)
    at `enter code here`org.glassfish.hk2.utilities.binding.AbstractBinder.resetBuilder(AbstractBinder.java:180)
    at org.glassfish.hk2.utilities.binding.AbstractBinder.complete(AbstractBinder.java:190)
    at org.glassfish.hk2.utilities.binding.AbstractBinder.bind(AbstractBinder.java:174)
    at org.glassfish.jersey.model.internal.CommonConfig.configureBinders(CommonConfig.java:663)
    at org.glassfish.jersey.model.internal.CommonConfig.configureMetaProviders(CommonConfig.java:650)
    at org.glassfish.jersey.server.ResourceConfig.configureMetaProviders(ResourceConfig.java:829)
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:453)
    at org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:184)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:350)
    at org.glassfish.jersey.server.ApplicationHandler$3.call(ApplicationHandler.java:347)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.processWithException(Errors.java:255)
    at org.glassfish.jersey.server.ApplicationHandler.<init>(ApplicationHandler.java:347)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:390)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:172)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:364)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1227)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1140)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
  

web.xml:

 <?xml version="1.0" encidong="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>ido Restful Services</display-name>
    <filter>
        <filter-name>MyFilter</filter-name>
        <filter-class>WTGFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>MyFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
 <context-param>
  <param-name>resteasy.scan</param-name>
  <param-value>false</param-value>
 </context-param>
 <context-param>
  <param-name>resteasy.scan.providers</param-name>
  <param-value>false</param-value>
 </context-param>
 <context-param>
  <param-name>resteasy.scan.resources</param-name>
  <param-value>false</param-value>
 </context-param>
    <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>
                     org.glassfish.jersey.servlet.ServletContainer
                </servlet-class>

                <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>

        <init-param>
             <param-name>com.sun.jersey.config.property.packages</param-name>
             <param-value>ikmtb.ido.rest.resource</param-value>
        </init-param> 
         <init-param>
         <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
         <param-value>com.sun.jersey.api.container.filter.LoggingFilter</param-value>
     </init-param>
                <init-param>
                      <param-name>jersey.config.server.provider.packages</param-name>
                      <param-value>ikmtb.ido.rest.resource</param-value>
                </init-param>
                <!--Validation of inputs for bug 22481993 and 22745290-->
                <init-param>
                      <param-name>jersey.config.server.provider.classnames</param-name>
                      <param-value>ikmtb.ido.rest.exception.mapper.MandatoryParamMissingExceptionMapper,ikmtb.ido.rest.exception.mapper.ServiceFailedExceptionMapper,ikmtb.ido.rest.exception.mapper.InvalidStatusExceptionMapper</param-value>
                </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
 <security-constraint>
         <web-resource-collection>
             <web-resource-name>*</web-resource-name>
             <url-pattern>/sample/*</url-pattern>
             <http-method>GET</http-method>
             <http-method>POST</http-method>
         </web-resource-collection>
         <auth-constraint>
             <role-name>Admin</role-name> 
         </auth-constraint>
    </security-constraint>
        <login-config>
            <auth-method>BASIC</auth-method>
            <realm-name>default</realm-name>
        </login-config>
    <security-role>
        <role-name>admin</role-name>
    </security-role>
</web-app>