安全的AJP连接器无法渲染

时间:2015-05-08 18:45:31

标签: java spring tomcat ajp hybris

我们在apache web服务器后面有一个hybris服务器,它与ajp连接器相连。这是完美的,但是由于某种原因,在更新到hybris 5.3(和tomcat 7)之后,安全的ajp连接器没有渲染。

在hybris tomcat配置文件夹中,我们在server.xml中有这个:

 $('.scrolltdup').click(function(event) {
  event.preventDefault();
  $('.wrap').animate({
    marginTop: "+=160px"
  }, "fast");
 });

$('.scrolltddown').click(function(event) {
  event.preventDefault();
  $('.wrap').animate({
    marginTop: "-=160px"
  }, "fast");
});

在平台server.xml

中渲染ant all all
${tomcat.connectors.ajp.plain}

这适用于非安全连接,但我们还需要呈现安全连接器:

<Connector  protocol="AJP/1.3"  port="8009" proxyPort="80" redirectPort="443" />

我可以将其硬编码到server.xml中,但这似乎不是最好的方法。我无法找到实际呈现 $ {tomcat.connectors.ajp.plain} 的位置。是否有类似的属性可以使用local.properties中定义的端口呈现安全连接器?

2 个答案:

答案 0 :(得分:0)

我认为你应该尝试:

<Connector
 protocol="AJP/1.3"
 port="8010"
 connectionTimeout="20000"
 scheme="https"
 SSLEnabled="true"
 secure="true"
 maxThreads="200"
 proxyPort="443"/>

答案 1 :(得分:0)

我担心你必须在配置目录的server.xml模板中手动声明它。

实际上,我更喜欢为两个AJP连接器执行此操作,因为您提到的变量注入的模板化配置不是很好,因此我看到了显着的性能问题。例如,未指定线程数,并且它与执行程序无关。这意味着当处于大负载时,活动线程的数量可能会增长到一个愚蠢的数字,并导致整个事情都崩溃。

事实上,下面是我使用的 config / tomcat / conf / server.xml 的片段,我已经开发了7年,专门研究Hybris。它不仅具有合理的配置,而且还使用性能更高的非阻塞IO协议。

希望这有帮助。

<Executor   name="hybrisExecutor"
            namePrefix="hybrisHTTP"
            maxThreads="${tomcat.maxthreads}"
            minSpareThreads="${tomcat.minsparethreads}"
            maxIdleTime="${tomcat.maxidletime}"/>

<Connector  port="${tomcat.http.port}"
            maxHttpHeaderSize="8192"
            maxThreads="${tomcat.maxthreads}"
            protocol="org.apache.coyote.http11.Http11NioProtocol"
            executor="hybrisExecutor"
            enableLookups="false"
            acceptCount="${tomcat.acceptcount}"
            connectionTimeout="20000"
            URIEncoding="UTF-8"
            disableUploadTimeout="true" />

<Connector  port="${tomcat.ssl.port}"
            maxHttpHeaderSize="8192"
            maxThreads="${tomcat.maxthreads}"
            protocol="org.apache.coyote.http11.Http11NioProtocol"
            executor="hybrisExecutor"
            enableLookups="false"
            acceptCount="${tomcat.acceptcount}"
            connectionTimeout="20000"
            disableUploadTimeout="true"
            URIEncoding="UTF-8"
            SSLEnabled="true"
            scheme="https"
            secure="true"
            clientAuth="false"
            sslProtocol="TLS"
            keystoreFile="${catalina.home}/lib/keystore"
            keystorePass="123456" />

<!--
    We explicitly declare the AJP connectors as we want to separate HTTP and SSL traffic and the default connector setting Hybris provides is not good enough.
-->
<Connector  protocol="org.apache.coyote.ajp.AjpNioProtocol"
            executor="hybrisExecutor"
            enableLookups="false"
            acceptCount="${tomcat.acceptcount}"
            connectionTimeout="120000"
            maxThreads="${tomcat.maxthreads}"
            port="${tomcat.ajp.port}"
            proxyPort="${proxy.http.port}"
            redirectPort="${proxy.ssl.port}"
            URIEncoding="UTF-8"
            useIPVHosts="${tomcat.ajp.useipv}" />

<Connector  protocol="org.apache.coyote.ajp.AjpNioProtocol"
            executor="hybrisExecutor"
            enableLookups="false"
            acceptCount="${tomcat.acceptcount}"
            connectionTimeout="120000"
            maxThreads="${tomcat.maxthreads}"
            port="${tomcat.ajp.secureport}"
            proxyPort="${proxy.ssl.port}"
            redirectPort="${proxy.http.port}"
            scheme="https"
            secure="true"
            URIEncoding="UTF-8"
            useIPVHosts="${tomcat.ajp.useipv}" />

变量只是您在local.properties中声明的属性。当它在平台tomcat目录中构建实际的server.xml时,它们在构建时被ant部署任务替换。