【问题标题】:How to make Jetty read new jetty-xxx.xml files如何让 Jetty 读取新的 jetty-xxx.xml 文件
【发布时间】:2018-06-27 14:28:14
【问题描述】:

我为我的 jndi 数据源创建了一个带有特定配置的 xml 文件,如下所示:

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
        <Configure id="Server" class="org.eclipse.jetty.server.Server">
            <New id="MyDB" class="org.eclipse.jetty.plus.jndi.Resource">
                <Arg></Arg>
                <Arg>jdbc/MyDB</Arg>
                <Arg>
                    <New class="com.mysql.cj.jdbc.MysqlConnectionPoolDataSource">
                        <Set name="url">******</Set>
                        <Set name="user">******</Set>
                        <Set name="password">******</Set>
                    </New>
                </Arg>
            </New>
        </Configure>

在 $JETTY_BASE/etc 上删除了此文件,但 Jetty 似乎无法读取该文件来配置数据源。但是,如果我选择“新建”标签并将其复制到 jetty.xml 文件中,它就可以工作。

我希望将其放在一个单独的文件中,以便更轻松地部署到生产环境,并在 jetty-maven-plugin 中使用此文件。

这可能吗?我做错了什么?

【问题讨论】:

    标签: jetty


    【解决方案1】:

    Jetty 只会根据配置读取它被告知要读取的内容。

    您可以使用--list-config 命令行选项查看那将是什么。

    例子:

    [new-base]$ java -jar ../jetty-home-9.4.11.v20180605/start.jar --list-config
    
    ...(snip lots of output)...
    
    Jetty Active XMLs:
    ------------------
     ${jetty.home}/etc/jetty-threadpool.xml
     ${jetty.home}/etc/jetty.xml
     ${jetty.home}/etc/jetty-webapp.xml
     ${jetty.home}/etc/jetty-plus.xml
     ${jetty.home}/etc/jetty-annotations.xml
     ${jetty.home}/etc/jetty-deploy.xml
     ${jetty.home}/etc/jetty-http.xml
     ${jetty.home}/etc/jetty-jmx.xml
    

    如您所见,仅读取了上述 XML 文件。

    假设我们添加了一个${jetty.base}/etc/my-datasource.xml,我们还需要告诉码头使用该xml。

    我们可以手动将其添加到${jetty.base}/start.ini 或使用您想要的任何名称创建一个新文件,例如${jetty.base}/start.d/mydatasource.ini

    例子:

    [new-base]$ cat start.d/mydatasource.ini
    etc/mydatasource.xml
    

    现在当你询问时,你会看到它列出来......

    [new-base]$ java -jar ../jetty-home-9.4.11.v20180605/start.jar --list-config
    
    
    ...(snip lots of output)...
    
    Jetty Active XMLs:
    ------------------
     ${jetty.home}/etc/jetty-threadpool.xml
     ${jetty.home}/etc/jetty.xml
     ${jetty.home}/etc/jetty-webapp.xml
     ${jetty.home}/etc/jetty-plus.xml
     ${jetty.home}/etc/jetty-annotations.xml
     ${jetty.home}/etc/jetty-deploy.xml
     ${jetty.home}/etc/jetty-http.xml
     ${jetty.home}/etc/jetty-jmx.xml
     ${jetty.base}/etc/mydatasource.xml
    

    【讨论】:

    • 谢谢,它确实工作得很好。只需在 start.d 文件夹中创建新的 ini 文件就足够了。这样我就可以保持原始码头文件不变,只需添加新文件即可配置我的生产服务器。
    • 谢谢。这在 Jetty 文档的任何地方都没有明确讨论,理解这一点非常关键。
    猜你喜欢
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2020-07-11
    相关资源
    最近更新 更多