【问题标题】:How to pass a reference when initializing a servlet初始化servlet时如何传递引用
【发布时间】:2011-03-21 15:47:49
【问题描述】:

我将如何传递对 servlet 初始化的引用?

所以,假设我的 web.xml 中有这样的内容:

<servlet>
    <servlet-name>RestTestServlet V3.1</servlet-name>
    <servlet-class>com.xxx.servlet.RestTestServlet</servlet-class>
    <init-param>
        <param-name>serviceConsumerKey</param-name>
        <param-value>com.xxx.oauth.ConsumerKey</param-value>
    </init-param>
</servlet>

当我尝试获取参数时,当然我只是获取文字字符串值(“com.xxx...等)。

com.xxx.oauth.ConsumerKey 是我从 JNDI 中提取的字符串 bean,但我不确定如何让 servlet 知道它。我正在使用 Spring。

有没有办法通过 web.xml 做到这一点?如果没有,你会怎么做我想做的事?

【问题讨论】:

  • "...让 servlet 意识到这一点。"什么意思?
  • 我希望 servlet 能够具有 com.xxx.oauth.ConsumerKey bean 的值。所以,我把那个 bean 传递给它,然后会有一些方法来获取那个 bean 的字符串值。
  • 目前还不清楚你在问什么。什么是“四季豆”? “意识到它”是什么意思?从ServletConfig 获取值有什么问题?
  • 如何通过 init-param(或其他方法)在 servlet 上设置 bean?所以我有一个名为 com.xxx.oauth.ConsumerKey 的 java.lang.String bean,我希望 servlet 能够访问该 bean。我不能只传递值本身。本质上,我想要像构造函数一样的行为,我传入一个 String 对象并可以在 servlet 上设置它。现在,我正在从 servlet 上下文中获取 WebApplicationContext 并使用 context.getBean() 来获取 bean。
  • 为什么投反对票?还有为什么要同时对其他三个不相关的问题投反对票?

标签: java spring servlets


【解决方案1】:

通常的 Spring 方法是编写自己的 servlet,而是将 Spring WebApplicationCONtext 与 DispatcherServlet 一起使用。即,您的 servlet 将被替换为 spring bean,配置为处理某些请求并注入 JNDI 对象。

【讨论】:

  • 你说得对,这样会更好。我的短期快速修复解决方案是获取 WebApplicationContext 并从中获取 bean,但我知道这并不理想。
猜你喜欢
  • 2011-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 2012-09-01
  • 2016-06-14
  • 1970-01-01
相关资源
最近更新 更多