gradle 项目 jetty如何配置https

在使用uberjar打包项目时,需要使用jetty来配置jdni和https

这是打包成jar的gradle任务
task buildUberJar(type: CubaUberJarBuilding) {
    singleJar = true
    logbackConfigurationFile = 'etc/uber-jar-logback.xml'
    webPort = 8993
    coreJettyEnvPath = 'modules/core/web/META-INF/jetty-env.xml'
    appProperties = ['cuba.automaticDatabaseUpdate' : true]
    webJettyConfPath = 'jetty.xml'
}

webJettyConfPath = 'jetty.xml'为http的配置文件路径

jetty-env.xml为配置数据源的xml

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure id='wac' class="org.eclipse.jetty.webapp.WebAppContext">
<New id="CubaDS" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg/>
    <Arg>jdbc/CubaDS</Arg>
    <Arg>
        <New class="org.apache.commons.dbcp2.BasicDataSource">
            <Set name="driverClassName">org.hsqldb.jdbc.JDBCDriver</Set>
            <Set name="url">jdbc:hsqldb:file:/web/app/nbrest/home/hsql</Set>
            <Set name="username">sa</Set>
            <Set name="maxIdle">2</Set>
            <Set name="maxTotal">20</Set>
            <Set name="maxWaitMillis">5000</Set>
        </New>
    </Arg>
</New>
</Configure>

jetty.xml 为https的配置

<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
    <!-- Force all communication over secure channels. -->
    <Set name="handler">
        <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
            <Set name="handlers">
                <Array type="org.eclipse.jetty.server.Handler">
                    <Item>
                        <New id="SecuredRedirectHandler" class="org.eclipse.jetty.server.handler.SecuredRedirectHandler" />
                    </Item>
                    <Item>
                        <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection" />
                    </Item>
                    <Item>
                        <New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler" />
                    </Item>
                </Array>
            </Set>
        </New>
    </Set>

    <New id="httpConfig" class="org.eclipse.jetty.server.HttpConfiguration">
        <Set name="secureScheme">https</Set>
        <Set name="securePort">8943</Set>
    </New>

    <New id="httpsConfig" class="org.eclipse.jetty.server.HttpConfiguration">
        <Call name="addCustomizer">
            <Arg>
                <New class="org.eclipse.jetty.server.SecureRequestCustomizer" />
            </Arg>
        </Call>
    </New>

    <New id="connector" class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server">
            <Ref refid="Server" />
        </Arg>
        <Arg name="factories">
            <Array type="org.eclipse.jetty.server.ConnectionFactory">
                <Item>
                    <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                        <Arg name="config">
                            <Ref refid="httpConfig" />
                        </Arg>
                    </New>
                </Item>
            </Array>
        </Arg>

        <Set name="port">8993</Set>
    </New>

    <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
        <Set name="keyStorePath">keystore.jks</Set>
        <Set name="keyStorePassword">dataocean123</Set>
        <Set name="keyManagerPassword">dataocean123</Set>
        <Set name="trustStorePath">keystore.jks</Set>
        <Set name="trustStorePassword"></Set>
    </New>

    <New id="sslConnectionFactory" class="org.eclipse.jetty.server.SslConnectionFactory">
        <Arg name="sslContextFactory">
            <Ref refid="sslContextFactory" />
        </Arg>
        <Arg name="next">http/1.1</Arg>
    </New>

    <New id="sslConnector" class="org.eclipse.jetty.server.ServerConnector">
        <Arg name="server">
            <Ref refid="Server" />
        </Arg>
        <Arg name="factories">
            <Array type="org.eclipse.jetty.server.ConnectionFactory">
                <Item>
                    <Ref refid="sslConnectionFactory" />
                </Item>
                <Item>
                    <New class="org.eclipse.jetty.server.HttpConnectionFactory">
                        <Arg name="config">
                            <Ref refid="httpsConfig" />
                        </Arg>
                    </New>
                </Item>
            </Array>
        </Arg>

        <Set name="port">8943</Set>
    </New>

    <Call name="setConnectors">
        <Arg>
            <Array type="org.eclipse.jetty.server.ServerConnector">
                <Item>
                    <Ref refid="connector" />
                </Item>
                <Item>
                    <Ref refid="sslConnector" />
                </Item>
            </Array>
        </Arg>
    </Call>
</Configure>

除此之外还应该 在web.xml文件中添加配置

 <!--<security-constraint>-->
        <!--<web-resource-collection>-->
            <!--<web-resource-name>Everything in the webapp</web-resource-name>-->
            <!--<url-pattern>/*</url-pattern>-->
        <!--</web-resource-collection>-->
        <!--<user-data-constraint>-->
            <!--<transport-guarantee>CONFIDENTIAL</transport-guarantee>-->
        <!--</user-data-constraint>-->
    <!--</security-constraint>-->

如果将CONFIDENTIAL改为none则会关闭https

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值