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

如何启用MultiPart Feature?

锺离飞鸣
2023-03-14

我的 JAX-RS 应用程序具有扩展的应用程序类。

@ApplicationPath("/")
public class MyApplication extends Application {
    // empty; really empty
}

如何启用org.glassfish.jersey.media.multipart。MultiPartFeature而不修改类?或者不需要注册所有资源类/包?

共有2个答案

栾昂雄
2023-03-14

对我来说,工作如下:

        final ResourceConfig resourceConfig = new ResourceConfig(ApplicationConfig.class);
        resourceConfig.packages("com.econorma.rest");
        resourceConfig.register(MultiPartFeature.class);

        ServletHolder jerseyServlet  = new ServletHolder(new ServletContainer(resourceConfig));

这是Application Config类

@ApplicationPath("/")
public class ApplicationConfig extends Application {

    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> resources = new HashSet<Class<?>>();
        resources.add(MultiPartFeature.class);
        resources.add(EntryPoint.class);
        return resources;
    }

    @Override
    public Map<String, Object> getProperties() {
        Map<String, Object> properties = new HashMap<String, Object>();
        properties.put("jersey.config.server.provider.packages", "com.econorma.rest");
        return properties;
    }
}
宰父阳焱
2023-03-14

不确定为什么不使用ResourceConfig而不是Applicationclass。我能想到的唯一原因是可移植性,但使用泽西岛特有的多部分功能已经打破了这种可移植性。

但是无论如何,我会试着用“最便携”的方式来回答这个问题。你能做的就是设置一个属性,就像你在web.xml.要设置任意属性,你可以覆盖

@Override
public Map<String, Object> getProperties() {}

,并在其中设置属性。

@Override
public Map<String, Object> getProperties() {
    Map<String, Object> props = new HashMap<>();
    props.put("jersey.config.server.provider.classnames", 
            "org.glassfish.jersey.media.multipart.MultiPartFeature");
    return props;
}

这将维护资源和提供者的类路径扫描。仅当覆盖getClasses()getSingletons()(并返回非空集)时,才会禁用扫描,但 可以。

另一个选项:

创建一个Feature来包装该功能,并让该功能被发现,如下所示

就个人而言,我会...

只需使用ResourceConfig,因为您已经破坏了可移植性(还有一点破坏:-)

@ApplicationPath("/")
public class AppConfig extends ResourceConfig {
    public AppConfig() {
        packages("packages.to.scan");
        register(MultiPartFeature.class);
    }
}
 类似资料:
  • 问题内容: 我找到了一些有关如何启用gzip的教程,但似乎对我没有任何帮助,所以我的问题是如何启用gzip。我在共享的Dreamhost托管服务器上,它正在运行PHP版本5.2,并且Apache从PHP信息中找到了这一行,这可能有所帮助吗? 我也找到了这条线 我不知道这是否与它有关。但这是我的第一个问题,其次,我有一个存放着Javscript文件的保管箱,我想知道是否可以将该文件压缩成文件,而不是

  • 我有ubuntu 14.04服务器。1 PHP 7.1版。11-1乌本图14。04.1黛布。苏里。Org1Zend引擎v3。1.0,版权所有(c)1998-2017 Zend Technologies与Zend OPcache v7。1.11-1乌本图14。04.1黛布。苏里。组织1,版权(c)1999-2017,由Zend Technologies出版 在php中。ini文件,我有 我补充说 在

  • 我有两个带有ImageIcon的JRadioButton。由于我使用的图像图标,我需要给出一个按钮被选中而另一个按钮未被选中的外观。为此,我尝试禁用另一个按钮,它会自动将ImageIcon更改为disabled外观。 问题是,当我点击禁用的JRadioButton时,什么都没有发生,甚至连JRadioButton上的ActionListener都没有被调用。 有没有一种方法可以通过直接单击禁用的J

  • 问题内容: 我已经安装并正在运行PHP(版本:5.3.17),并且我想切换到mysqlnd(在phpinfo中,mysqlnd根本不存在)。 我读过为了进行设置,您需要更新命令: 当我尝试安装它时,出现错误: 问题答案: 该命令是源代码编译过程的一部分。 您可以从源代码进行编译,也可以通过软件包管理器进行安装。我想在您的情况下,包管理器更可取。 正如程序包管理器抱怨的那样,您不能同时安装和安装。

  • 问题内容: 通常在服务器级别阻止DDoS(分布式拒绝服务攻击),对吗? 有没有办法在PHP级别上阻止它,或者至少减少它? 如果没有,阻止DDoS攻击的最快,最常见的方法是什么? 问题答案: DDOS是一系列攻击,它们淹没了数据中心的关键系统,其中包括: 托管中心与互联网的网络连接 托管中心的内部网络和路由器 您的防火墙和负载平衡器 您的Web服务器,应用程序服务器和数据库。 在开始构建DDOS防御

  • 问题内容: 我正在尝试在Ubuntu中为PHP安装sqlite3。 我安装并编辑为包含sqlite3扩展。 当我跑步时我得到 如上所示,已启用。但是,当我使用时,出现“找不到类SQLite3” 问题答案: 尝试: 那对我有用。