Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jersey over RESTfull服务上载文件,并且资源配置不可修改? 警告:在索引0处找不到public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition)类型参数的注入源。 严重:WebModule[/InName]StandardWrapper.Throwable org.glassfish.jersey.server.model.ModelValidationException:应用程序资源模型的验证在应用程序初始化期间失败。 [[FATAL]在索引0处找不到public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition)类型的参数的注入源;source='ResourceMethod{httpMethod=POST,consumedTypes=[multipart/form data],producedTypes=[],suspended=false,suspendTimeout=0,suspendTimeoutUnit=毫秒,invocable=invocable{handler=MethodHandler{handlerClass=class com.insame.service.UploadFileService,handlerConstructors=[org.glassfish.jersey.server.model。HandlerConstructor@47bee27a]},handlingMethod=public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition),参数=[Parameter[type=class java.io.InputStream,source=file,defaultValue=null],参数[type=class com.sun.jersey.core.header.FormDataContentDisposition,source=file,defaultValue=null]],responseType=class javax.ws.rs.core.Response},nameBindings=[]}] 位于org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:410) 位于org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:157) 位于org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:280) 位于org.glassfish.jersey.internal.Errors$2.call(Errors.java:289) 位于org.glassfish.jersey.internal.Errors$2.call(Errors.java:286) 位于org.glassfish.jersey.internal.Errors.process(Errors.java:315) 位于org.glassfish.jersey.internal.Errors.process(Errors.java:297) 位于org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286) 位于org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:277) 位于org.glassfish.jersey.servlet.WebComponent(WebComponent.java:262) 位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)_Java_Rest_File Upload_Jersey_Jersey 2.0 - Fatal编程技术网

使用Jersey over RESTfull服务上载文件,并且资源配置不可修改? 警告:在索引0处找不到public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition)类型参数的注入源。 严重:WebModule[/InName]StandardWrapper.Throwable org.glassfish.jersey.server.model.ModelValidationException:应用程序资源模型的验证在应用程序初始化期间失败。 [[FATAL]在索引0处找不到public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition)类型的参数的注入源;source='ResourceMethod{httpMethod=POST,consumedTypes=[multipart/form data],producedTypes=[],suspended=false,suspendTimeout=0,suspendTimeoutUnit=毫秒,invocable=invocable{handler=MethodHandler{handlerClass=class com.insame.service.UploadFileService,handlerConstructors=[org.glassfish.jersey.server.model。HandlerConstructor@47bee27a]},handlingMethod=public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition),参数=[Parameter[type=class java.io.InputStream,source=file,defaultValue=null],参数[type=class com.sun.jersey.core.header.FormDataContentDisposition,source=file,defaultValue=null]],responseType=class javax.ws.rs.core.Response},nameBindings=[]}] 位于org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:410) 位于org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:157) 位于org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:280) 位于org.glassfish.jersey.internal.Errors$2.call(Errors.java:289) 位于org.glassfish.jersey.internal.Errors$2.call(Errors.java:286) 位于org.glassfish.jersey.internal.Errors.process(Errors.java:315) 位于org.glassfish.jersey.internal.Errors.process(Errors.java:297) 位于org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286) 位于org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:277) 位于org.glassfish.jersey.servlet.WebComponent(WebComponent.java:262) 位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)

使用Jersey over RESTfull服务上载文件,并且资源配置不可修改? 警告:在索引0处找不到public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition)类型参数的注入源。 严重:WebModule[/InName]StandardWrapper.Throwable org.glassfish.jersey.server.model.ModelValidationException:应用程序资源模型的验证在应用程序初始化期间失败。 [[FATAL]在索引0处找不到public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition)类型的参数的注入源;source='ResourceMethod{httpMethod=POST,consumedTypes=[multipart/form data],producedTypes=[],suspended=false,suspendTimeout=0,suspendTimeoutUnit=毫秒,invocable=invocable{handler=MethodHandler{handlerClass=class com.insame.service.UploadFileService,handlerConstructors=[org.glassfish.jersey.server.model。HandlerConstructor@47bee27a]},handlingMethod=public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition),参数=[Parameter[type=class java.io.InputStream,source=file,defaultValue=null],参数[type=class com.sun.jersey.core.header.FormDataContentDisposition,source=file,defaultValue=null]],responseType=class javax.ws.rs.core.Response},nameBindings=[]}] 位于org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:410) 位于org.glassfish.jersey.server.ApplicationHandler.access$500(ApplicationHandler.java:157) 位于org.glassfish.jersey.server.ApplicationHandler$3.run(ApplicationHandler.java:280) 位于org.glassfish.jersey.internal.Errors$2.call(Errors.java:289) 位于org.glassfish.jersey.internal.Errors$2.call(Errors.java:286) 位于org.glassfish.jersey.internal.Errors.process(Errors.java:315) 位于org.glassfish.jersey.internal.Errors.process(Errors.java:297) 位于org.glassfish.jersey.internal.Errors.processWithException(Errors.java:286) 位于org.glassfish.jersey.server.ApplicationHandler.(ApplicationHandler.java:277) 位于org.glassfish.jersey.servlet.WebComponent(WebComponent.java:262) 位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167),java,rest,file-upload,jersey,jersey-2.0,Java,Rest,File Upload,Jersey,Jersey 2.0,我在UploadFileService下实现了这样的测试服务: @Path("file.upload") public class UploadFileService { @POST @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFile( @FormDataParam("file") InputStream uploadedInputStream, @FormDataParam("f

我在
UploadFileService
下实现了这样的测试服务:

@Path("file.upload")
public class UploadFileService {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

    System.out.println("-----------------UploadFileService------------------1.");
    // Should we use a disk or DB? Decided to use DISK
    // Path should be read from properties-files
    String uploadedFileLocation = "//uploaded/" + fileDetail.getFileName();

    // save it
    writeToFile(uploadedInputStream, uploadedFileLocation);

    String output = "File uploaded to : " + uploadedFileLocation;
    // All went OK
    return Response.status(200).entity(output).build();

}
我记录了这个异常:

@GET
@Path("count")
@Produces("text/plain")
public String countREST() {
    return "1 one 1";
}
FINE:[Web安全]hasResource perm:(“javax.Security.jacc.WebResourcePermission”
/webresources/file.upload/count“GET”)
严重:WebModule[/InName]StandardWrapper.Throwable
java.lang.IllegalStateException:资源配置在此上下文中不可修改。
位于org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:257)
警告:StandardWrapperValve[com.insame.service.ApplicationConfig]:为servlet com.insame.service.ApplicationConfig分配异常
java.lang.IllegalStateException:资源配置在此上下文中不可修改。
位于org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:257)
位于org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:205)
位于org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:435)
位于org.glassfish.jersey.servlet.WebComponent(WebComponent.java:261)
位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
环境

  • Netbeans7.3.1
  • 玻璃鱼4.0
  • 球衣2和玻璃鱼4.0

要在Jersey应用程序中使用multipart,您需要在应用程序中注册,即:

FINE:   [Web-Security] hasResource perm: ("javax.security.jacc.WebResourcePermission" 

"/webresources/file.upload/count" "GET")
SEVERE:   WebModule[/insame]StandardWrapper.Throwable
java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
    at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:257)
WARNING:   StandardWrapperValve[com.insame.service.ApplicationConfig]: Allocate exception for servlet com.insame.service.ApplicationConfig
java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
    at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:257)
    at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:205)
    at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:435)
    at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:261)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:167)
    at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:349)
公共类应用程序配置扩展应用程序{

public Set>resources=new HashSet我也遇到了同样的问题,希望避免创建自定义应用程序类。它没有很好的文档记录,但是如果您想添加多部分功能,只需将其添加到web.xml servlet配置中:

public class ApplicationConfig extends Application {

    public Set<Class<?>> getClasses() {
        final Set<Class<?>> resources = new HashSet<Class<?>>();

        // Add your resources.
        resources.add(UploadFileService.class);

        // Add additional features such as support for Multipart.
        resources.add(MultiPartFeature.class);

        return resources;
    }
}

jersey.config.server.provider.classnames
org.glassfish.jersey.filter.LoggingFilter;org.glassfish.jersey.media.multipart.MultiPartFeature

我还添加了一个loggingfilter。

只是一些小的澄清

使用

不是

只有在使用时才对我有效
org.glassfish.jersey.media.multipart.

在ApplicationConfig中,只需将MultiPartFeature注册为

com.sun.jersey.*
import org.glassfish.jersey.media.multipart.MultiPartFeature;
@javax.ws.rs.ApplicationPath(“webresources”)
公共类应用程序配置扩展应用程序{
@凌驾
public Set>resources=new java.util.HashSet();
添加(UploadFileService.class);
添加(MultiPartFeature.class);
归还资源;
}
}

如果您使用的是jetty server和jersey servlet,那么您可以通过在启动jetty server的主类中添加以下代码来解决此问题:

ServletHolder jerseyServlet=context.addServlet( org.glassfish.jersey.servlet.ServletContainer.class“/*”;jerseyServlet.setInitOrder(0)

//告诉Jersey Servlet要加载哪个REST服务/类。
球衣
.SetInit参数(
“jersey.config.server.provider.classnames”,
如果希望使用注释,可以使用与FormDataMultiPart等效的@FormDataParam(“文件”)

如下所示使用示例代码摘录:

      // Tells the Jersey Servlet which REST service/classes to load.
      jerseyServlet
              .setInitParameter(
                      "jersey.config.server.provider.classnames",
                      <Your entry point class's canonical name>
                              + ";org.glassfish.jersey.media.multipart.MultiPartFeature");

我正在使用Jersey 1.9.1.org.glassfish……与Jersey 2配合得很好。对于Jersey 1,您最好使用com.sun……类。

非常感谢!错误消息已更改,我在pom.xml中发现了一个错误。我使用的是旧的mu
com.sun.jersey.*
import org.glassfish.jersey.media.multipart.MultiPartFeature;

@javax.ws.rs.ApplicationPath("webresources")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> resources = new java.util.HashSet<>();
        resources.add(UploadFileService.class);
        resources.add(MultiPartFeature.class);
        return resources;
    }
}
      // Tells the Jersey Servlet which REST service/classes to load.
      jerseyServlet
              .setInitParameter(
                      "jersey.config.server.provider.classnames",
                      <Your entry point class's canonical name>
                              + ";org.glassfish.jersey.media.multipart.MultiPartFeature");
public Response uploadFile( **@FormDataParam("file")** InputStream fileInputStream,
             @FormDataParam("file") FormDataContentDisposition contentDispositionHeader) {