相关疑难解决方法(0)

使用Jersey通过RESTfull服务上传文件和资源配置是不可修改的?

@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();

}
Run Code Online (Sandbox Code Playgroud)
 WARNING: No injection source found for a parameter of type public javax.ws.rs.core.Response com.insame.service.UploadFileService.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at index …
Run Code Online (Sandbox Code Playgroud)

java rest file-upload jersey jersey-2.0

33
推荐指数
2
解决办法
5万
查看次数

问题Resteasy 3.09 CorsFilter

我尝试使用CorsFilterResteasy 3.0.9中提供的新功能.我在本页底部找到了一个示例: 使用JAX-RS/RESTEasy实现CORS的Ajax请求

如果我在方法getSingletons()(Application子类)中定义此过滤器,那么我的资源不再被扫描.这意味着将找不到资源并发生以下错误:

javax.ws.rs.NotFoundException: Could not find resource for full path Error Occures

在下一页我找到了一个描述: javax.ws.rs.NotFoundException:找不到完整路径的资源错误Occures

但基本上,此部署选项的作用是扫描应用程序的@ Path,@ Extider等注释.原因是JAX-RS将首先分别在重写的getClasses()和getSingletons()中查找类和对象.如果然后返回空集,则告诉JAX-RS进行扫描(根据规范).

所以如果我覆盖这个getSingletons()方法,JAX-RS不会进行扫描?有没有其他方法来配置它CorsFilter并启用资源扫描?

java jax-rs resteasy cors

16
推荐指数
1
解决办法
2万
查看次数

JAX-RS:如何扩展Application类来扫描包?

目前,我做了类似的事情

import javax.annotation.Nonnull;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

@ApplicationPath("oauth")
public class OAuthApplication extends Application {
    final Set<Class<?>> classes = new HashSet<>();

    @Nonnull
    @Override
    public Set<Class<?>> getClasses() {
        classes.add(RegisterResource.class);
        return Collections.unmodifiableSet(classes);
    }
}
Run Code Online (Sandbox Code Playgroud)

不,如果我添加十个新ResourceApplicationPath,我需要做

    classes.add(<ClassName>.class);
Run Code Online (Sandbox Code Playgroud)

十次,这是乏味的,有时也是健忘的.

请问JAX-RSRESTEasy提供,这样我可以提包名和类是在它扫描的方式吗?

我知道Jersey有一些东西

public class MyApplication extends ResourceConfig {
    public MyApplication() {
        packages("org.foo.rest;org.bar.rest");
    }
}
Run Code Online (Sandbox Code Playgroud)

参考

有什么想法/想法吗?

UPDATE

似乎我们可以做到以下 web.xml

   <context-param>
      <param-name>resteasy.scan</param-name>
      <param-value>true</param-value>
   </context-param>
Run Code Online (Sandbox Code Playgroud)

有具体的Java等价物吗?

java rest jax-rs jersey resteasy

10
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×3

jax-rs ×2

jersey ×2

rest ×2

resteasy ×2

cors ×1

file-upload ×1

jersey-2.0 ×1