1

我是 Java 开发的新手。我正在尝试PicoContainer在 servlet 应用程序中使用。我在 中配置了容器,但web.xml它在尝试创建过滤器时失败。所以我尝试像这样手动实例化过滤器:

Class<?> clazz = Class.forName("org.picocontainer.web.PicoServletContainerFilter");
Object test = clazz.newInstance();

我得到了同样的例外:

java.lang.InstantiationException

但我没有详细的消息。我想部署中的 JAR 中缺少某些东西(在这种情况下不应该有ClassNotFoundExeption?)

因为我不清楚所需的依赖。(似乎是旧的 dll 地狱时代)目前我正在部署以下 jars:

  • picocontainer-2.10.2.jar
  • picocontainer-web-core-2.4.jar
  • xstream-1.3.1.jar

问题是什么?是缺少罐子还是其他什么?如果缺少 Jar 并且因为我没有其他消息,我如何才能了解 Jar 缺少什么?部署整个 picocontainer jar 不是首选选项,因为它是一大堆文件。

编辑

问题似乎是类是抽象的!所以我不知道文档中的这个配置是如何工作的:http: //picocontainer.com/web/

4

2 回答 2

1

我想这只是一些错误的示例代码。对于基本的 IoC 组合,您根本不需要过滤器。org.picocontainer.web.PicoServletContainerListener 完成配置应用程序/会话/请求容器的所有工作。

请注意,它需要 WebappComposer 类型的类名作为 web.xml 中的上下文参数:

  <context-param>
   <param-name>webapp-composer-class</param-name>
   <param-value>com.company.MyWebappComposer</param-value>
  </context-param>

如果要将 servlet 上下文注入应用程序范围的组件、将 http 会话注入到会话范围的组件以及将 http 请求注入到请求范围的组件,则需要 filter impl。

于 2014-09-03T08:52:14.697 回答
0

我自己得到答案。问题当然org.picocontainer.web.PicoServletContainerFilter是抽象的。该类中有一个实现称为 servlet 过滤器。这里的工作配置: 在此处输入图像描述

于 2014-09-03T09:02:37.383 回答