【问题标题】:Can I use property placeholders in Jetty-env.xml?我可以在 Jetty-env.xml 中使用属性占位符吗?
【发布时间】:2014-03-14 03:53:18
【问题描述】:

我正在开发一个项目,该项目使用 jetty-env.xml 在测试环境中定义一些资源。它要求我劫持它并输入资源的用户名和密码。有没有办法以外部方式定义我的凭据并使用属性占位符?就像在 Spring applicationConfig.xml 中一样,我可以使用系统属性中定义的 ${username}。

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="wac" class="org.mortbay.jetty.webapp.WebAppContext">
<New id="validation_mail" class="org.mortbay.jetty.plus.naming.Resource">
    <Arg>mail/exampleMail</Arg>
    <Arg>
        <New class="org.mortbay.naming.factories.MailSessionReference">
            <Set name="user"></Set>
            <Set name="password"></Set>
            <Set name="properties">
                <New class="java.util.Properties">
                    <Put name="mail.smtp.host">mail.example.edu</Put>
                </New>
            </Set>
        </New>
    </Arg>
</New>

<New id="datasource" class="org.mortbay.jetty.plus.naming.Resource">
    <Arg>jdbc/DataSource</Arg>
    <Arg>
        <New class="com.sybase.jdbc3.jdbc.SybDataSource">
            <Set name="databaseName">example</Set>
            <Set name="serverName">testip.example.edu:2025</Set>
            <Set name="portNumber">2025</Set>
            <Set name="user">username</Set> <!-- put username here -->
            <Set name="password">password</Set> <!-- put password here -->
        </New>
    </Arg>
</New>

我是这些工具的新手,所以我可能比我想象的更接近答案。任何帮助将不胜感激。

环境: Spring Tool Suite 3.4.0 发布 Maven 3 码头插件 6.1 春天 3

【问题讨论】:

    标签: spring maven-3 maven-jetty-plugin


    【解决方案1】:

    如果您使用的是 jetty maven 插件,那么您可以在属性文件中定义您的属性。

    像这样配置码头插件:

    <configuration>
        <systemPropertiesFile>${project.basedir}/src/test/conf/jetty-env.properties</systemPropertiesFile>
    </configuration>
    

    然后你的 jetty-env.xml 可以是这样的:

    <New id="dsDatasource" class="org.eclipse.jetty.plus.jndi.Resource">
        <Arg>jdbc/dsProtWb</Arg>
        <Arg>
        <New class="org.apache.commons.dbcp.BasicDataSource">
            <Set name="driverClassName">net.sourceforge.jtds.jdbc.Driver</Set>
            <Set name='url'>jdbc:jtds:sqlserver://ROPFDN812Q:4900/dlmp_proteomics_wb_dev;instance=FDNDEV18;domain=mfad</Set>
            <Set name="username"><SystemProperty name="LANID" /></Set>
            <Set name="password"><SystemProperty name="LANPW" /></Set>
        </New>
        </Arg>
    </New>      
    

    【讨论】:

      【解决方案2】:

      您可以定义环境变量并将 Env 标签用作占位符。

      <New id="dsDatasource" class="org.eclipse.jetty.plus.jndi.Resource">
          <Arg>jdbc/dsProtWb</Arg>
          <Arg>
              <New class="org.apache.commons.dbcp.BasicDataSource">
                  <Set name="driverClassName">net.sourceforge.jtds.jdbc.Driver</Set>
                  <Set name='url'>jdbc:jtds:sqlserver://ROPFDN812Q:4900/dlmp_proteomics_wb_dev;instance=FDNDEV18;domain=mfad</Set>
                  <Set name="username"><Env name="LANID"/></Set>
                  <Set name="password"><Env name="LANPW"/></Set>
              </New>
          </Arg>
      </New>
      

      【讨论】:

      • 你在哪里定义 Env 变量?
      • 这取决于您的操作系统。您可以在 shell 初始化(linux 或 unix)中导出它们,或者对于较差的 Windows 用户,您可以按照此处的说明进行操作。 computerhope.com/issues/ch000549.htm
      • 顺便说一句,您需要运行 Jetty 7.6 才能正常工作。请记住,Jetty 在那个时间段内迁移到了 eclipse 基金会。
      猜你喜欢
      • 2023-03-31
      • 2015-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多