Как решить rg.glassfish.jersey.server.model.ModelValidationException - PullRequest
0 голосов
/ 07 февраля 2019

Мы пытаемся написать службу REST, которая принимает загрузку файла и полезную нагрузку xml.

Ниже приведена подпись метода:

@POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_XML)
    public Response upload(@HeaderParam("appName") String appName
            , @FormDataParam("payloadXML") String s, @FormDataParam("file") InputStream in) {
         .... java code ...
}

web.xml

<servlet>
        <servlet-name>ServletName</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>        
        <init-param>
            <param-name>jersey.config.server.provider.classnames</param-name>
            <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
        </init-param>       
        <load-on-startup>1</load-on-startup>
    </servlet>

Мы включили следующие файлы jar в путь сборки: jersey-media-multipart-2.17.jar mimepull-1.9.3.jar

Мы будем тестировать этот сервисиспользуя Post

Когда мы запускаем приложение, мы получаем следующее исключение:

org.glassfish.jersey.internal.Errors logErrors
SEVERE: Following issues have been detected: 
WARNING: Method public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream) on resource class org.company.rs.resource.AppResource contains multiple parameters with no annotation. Unable to resolve the injection source.

<Feb 7, 2019 2:14:33 PM IST> <Error> <org.glassfish.jersey.internal.Errors> <BEA-000000> <Following issues have been detected: 
WARNING: Method public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream) on resource class org.company.rs.resource.AppResource contains multiple parameters with no annotation. Unable to resolve the injection source.
> 
<Feb 7, 2019 2:14:33 PM IST> <Error> <HTTP> <BEA-101216> <Servlet: "ServletName" failed to preload on startup in Web application: "/appUrl".
org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] Method public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream) on resource class org.company.rs.resource.AppResource contains multiple parameters with no annotation. Unable to resolve the injection source.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/xml], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.company.rs.resource.AppResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@40a0aadd]}, definitionMethod=public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream), parameters=[Parameter [type=class java.lang.String, source=appName, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null], Parameter [type=class java.io.InputStream, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:555)
    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)
    Truncated. see log file for complete stacktrace
> 
<Feb 7, 2019 2:14:33 PM IST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "611766299216730" for task "2". Error is: "weblogic.application.ModuleException: org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] Method public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream) on resource class org.company.rs.resource.AppResource contains multiple parameters with no annotation. Unable to resolve the injection source.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/xml], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.company.rs.resource.AppResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@40a0aadd]}, definitionMethod=public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream), parameters=[Parameter [type=class java.lang.String, source=appName, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null], Parameter [type=class java.io.InputStream, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']"
weblogic.application.ModuleException: org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] Method public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream) on resource class org.company.rs.resource.AppResource contains multiple parameters with no annotation. Unable to resolve the injection source.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/xml], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.company.rs.resource.AppResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@40a0aadd]}, definitionMethod=public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream), parameters=[Parameter [type=class java.lang.String, source=appName, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null], Parameter [type=class java.io.InputStream, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
    at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:216)
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:211)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
    Truncated. see log file for complete stacktrace
Caused By: org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] Method public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream) on resource class org.company.rs.resource.AppResource contains multiple parameters with no annotation. Unable to resolve the injection source.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/xml], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.company.rs.resource.AppResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@40a0aadd]}, definitionMethod=public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream), parameters=[Parameter [type=class java.lang.String, source=appName, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null], Parameter [type=class java.io.InputStream, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:555)
    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)
    Truncated. see log file for complete stacktrace
> 
<Feb 7, 2019 2:14:33 PM IST> <Error> <Deployer> <BEA-149202> <Encountered an exception while attempting to commit the 7 task for the application "_auto_generated_ear_".> 
<Feb 7, 2019 2:14:33 PM IST> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating start task for application "_auto_generated_ear_".> 
<Feb 7, 2019 2:14:33 PM IST> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
weblogic.application.ModuleException: org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] Method public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream) on resource class org.company.rs.resource.AppResource contains multiple parameters with no annotation. Unable to resolve the injection source.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/xml], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.company.rs.resource.AppResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@40a0aadd]}, definitionMethod=public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream), parameters=[Parameter [type=class java.lang.String, source=appName, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null], Parameter [type=class java.io.InputStream, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']:org.glassfish.jersey.server.model.ModelValidationException:Validation of the application resource model has failed during application initialization.
[[FATAL] Method public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream) on resource class org.company.rs.resource.AppResource contains multiple parameters with no annotation. Unable to resolve the injection source.; source='ResourceMethod{httpMethod=POST, consumedTypes=[multipart/form-data], producedTypes=[application/xml], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=ClassBasedMethodHandler{handlerClass=class org.company.rs.resource.AppResource, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@40a0aadd]}, definitionMethod=public javax.ws.rs.core.Response org.company.rs.resource.AppResource.upload(java.lang.String,java.lang.String,java.io.InputStream), parameters=[Parameter [type=class java.lang.String, source=appName, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null], Parameter [type=class java.io.InputStream, source=null, defaultValue=null]], responseType=class javax.ws.rs.core.Response}, nameBindings=[]}']
    at org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:555)
    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)
    Truncated. see log file for complete stacktrace
> 

Пожалуйста, сообщите.

1 Ответ

0 голосов
/ 12 февраля 2019

Проблема была решена с использованием одинаковых версий всех банок из джерси.

...