【问题标题】:How can I replace my web.xml entries with weblogic JNDI?如何用 weblogic JNDI 替换我的 web.xml 条目?
【发布时间】:2016-02-15 17:38:07
【问题描述】:

我需要用无需重新部署即可更新的内容替换我的 web.xml 条目。一开始,我想创建一个数据库表,但后来有人建议使用 weblogic JNDI。问题是我不知道该怎么做,甚至不知道这是否可能。我试图在互联网上找到答案,但到目前为止还没有取得太大进展。你能帮我解决这个问题吗?提前致谢。

注意:这是我第一次在这里提问,所以请耐心等待。

【问题讨论】:

  • 为什么不用ApplicationContext属性?
  • 但是一旦您重新启动应用程序,它们就会丢失。
  • 我需要一些持久的东西。
  • 你有没有得到这个问题的答案?

标签: java weblogic jndi web.xml


【解决方案1】:

答案是使用部署计划,这是做这些事情的标准 weblogic 方式。这在此处进行了很好的描述:

http://middlewaremagic.com/weblogic/?p=5144

但是,假设您需要设置其他内容,即环境变量。如果我们首先将变量添加到 web.xml:

<env-entry>
    <env-entry-name>directoryPath</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>/data/uploads</env-entry-value>
</env-entry>

这定义了一条路径,当然可能因环境而异。

我们可以通过 InitialContext 来引用这个,或者只是通过 spring JEE:

<jee:jndi-lookup id="directoryPath" jndi-name="directoryPath" resource-ref="true" default-value="/data/uploads"/>

那么这个plan.xml是什么,首先你需要生成一个默认的,这个你可以从上面的链接中捏出来,但是你可以通过检查这个链接来生成你的默认:

From the docs

然后我们需要替换我们需要的值,因为我们使用的是 web.xml 我们需要插入 web.xml 位:

<module-descriptor external="false">
  <root-element>web-app</root-element>
  <uri>WEB-INF/web.xml</uri>
  <variable-assignment>
    <name>directoryPath</name>
    <xpath>/web-app/env-entry/env-entry-value</xpath>
  </variable-assignment>
</module-descriptor>

变量应该定义在plan.xml的变量部分

<variable>
  <name>directoryPath</name>
  <value>/data/secrets</value>
</variable>
<variable>

最后更新应用(计划可以通过-plan选项默认上传)或者在控制台中指定计划。 在控制台中,选择部署,选择更新并从文件系统中选择计划。 该应用程序是您当前的部署,plan.xml 可以随时更新。是的,应用程序确实会重新启动,但这可能是计划中的轻度中断,而不是全面的重新部署。 将使用新的目录路径。不是我将授予您的最简单的 JNDI 设置界面,但它确实有效。

【讨论】:

    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多