当前位置: 首页 > 知识库问答 >
问题:

NetBeans Glassfish REST库与Jersey库冲突:ModelValidationException

闻梓
2023-03-14

我尝试在运行于GlassFish Server 4.0上的REST项目中进行文件上传。

GlassFish服务器(尽管我觉得它令人困惑)在javax.ws.rs库中有自己版本的Jersey库,到目前为止运行良好,但是现在我需要使用MediaType。REST服务器服务上的MULTIPART_FORM_DATA和FormDataContentDisposition,在GlassFish中找不到它们。

因此,我下载了新泽西图书馆并添加了

import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;

对于库,服务器端代码是

@ApplicationPath("webresources")
@Path("/file")
@Stateless
public class FileResource
{  
    @POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadWeb(@FormDataParam("file") InputStream inputStream,
            @FormDataParam("file") FormDataContentDisposition disposition)
    {
        int read = 0;
        byte[] bytes = new byte[1024];
        try
        {
            while ((read = inputStream.read(bytes)) != -1)
            {
                System.out.write(bytes, 0, read);
            }
        }
        catch (IOException ex)
        {
            Logger.getLogger(FileResource.class.getName()).log(Level.SEVERE, null, ex);
        }
        return Response.status(403).entity(inputStream).build();
    }
}

然而,现在每当调用REST资源(即使是以前工作正常的资源)时,我都会收到错误:

org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.

如何修复上述错误?如何向GlassFish服务器添加jersey.multipart支持?

共有1个答案

车峻熙
2023-03-14

Ok通过使用以下仅使用GlassFish可用库的服务器端代码找到了一种方法:

@POST
    @Path("/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadWeb(InputStream inputStream)
    {
        DataInputStream dataInputStream = new DataInputStream(inputStream);
        try
        {
            StringBuffer inputLine = new StringBuffer();
            String tmp;
            while ((tmp = dataInputStream.readLine()) != null)
            {
                inputLine.append(tmp);
                System.out.println(tmp);
            }
        }
        catch (IOException ex)
        {
            Logger.getLogger(FileResource.class.getName()).log(Level.SEVERE, null, ex);
        }
        return Response.status(403).entity(dataInputStream).build();
    }
 类似资料:
  • 我正在开发一个应用程序和一个库(Android模块)。它们在不交互时没有问题:在导入库后,Android Studio搞乱了设置,我无法恢复。 和其他98个类似的:都与主题问题有关。 还有其他消息引用值、,例如:

  • 我有一个eclipse(版本:2021-09(4.21.0))项目,我得到了“org.w3c.dom包可以从多个模块访问:未命名 组织。w3c。dom是java语言。构建路径上jre系统库(openjdk-17)中的xml。组织。w3c。dom也在xercesImpl-2.12.0模块中。SP03.jar,它包含在添加到我的构建路径的wildfly 25运行时库中。 我的项目需要jar中的xerc

  • 我正在开发一个项目,它访问本地数据库,然后在JBoss AP服务器中调用远程EJB服务。 因此,我使用hibernate-release-4.1.5.Final进行Hibernate,jbossall-client.jar调用远程EJB服务。 但是,当运行jndiContext.lookup("xxx ")方法时,会出现一个异常,消息如下所示。 我已经尝试过,发现Hibernate框架的jboss

  • 你好,我有一个Spring Boot应用程序,正在使用 这取决于泽西版本2.7。 当试图使用 在内部使用泽西版本1.1时,应用程序会失败,因为同一个库有两个不同的版本。 任何关于如何解决这个问题的建议,我都试图只使用2.7版,但它们似乎彼此不兼容 谢谢 java.lang.NoSuchMultiodError:javax.ws.rs.core.pplication.get属性()Ljava/uti

  • 我正在尝试使用NuGet Package Manager控制台将更改部署到数据库。当我发出命令时,该命令失败,并显示一条错误消息: 我的项目目标。NET 4.5.2,据我所知,它提供了在版本。因此,关联库不会放在二进制输出目录中。当我下载版本(Nuget包版本4.3.2)并将其复制到二进制输出目录,以及我的DLL时,我会收到另一条错误消息: 在这两种情况下,例外情况都是并将其抛出到Microsof

  • 我使用pybind11让python调用现有的C模块(库)。但是,在C库中,调用::GetModuleFileName(Visual Studio)来确定加载的模块在C中运行时的物理路径。但是当我通过pybind11从python(Jupyter Notebook)调用库时,python.exe的物理路径会返回。如何配置或更改以确保获得C库的物理路径? C代码是这样的:Lib. h 我ib.cpp