㈠ tomcat为什么老是宕机,ajp协议有什么需要注意的地方
AJP是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。
㈡ tomcat AJP 是什么东西
AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。
由于tomcat的html和图片解析功能相对其他服务器如apche等较弱,所以,一般都是集成起来使用,只有jsp和servlet服务交由tomcat处理,而tomcat和其他服务器的集成,就是通过ajp协议来完成的。
为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会再分配。
换句话说,在连接上,请求不是多元的。这个使连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。
(2)Ajp证书扩展阅读:
WEB服务器连接到SERVLET容器的状态类型:
1、空闲
这个连接上没有处理的请求。
2、已分派
连接正在处理特定的请求。
一旦一个连接被分配给一个特定的请求,在连接上发送的基本请求信息是高度压缩的。在这点,SERVLET容器大概准备开始处理请求,当它处理的时候,它能发回下面的信息给WEB服务器:
3、SEND_HEADERS
发送一组头到浏览器。
4、SEND_BODY_CHUNK
发送一块主体数据到浏览器。
5、GET_BODY_CHUNK
从请求获得下一个数据如果还没有全部传输完,如果请求内容的包长度非常大或者长度不确定,这是非常必要的。例如上载文件。注意这和HTTP的块传输没有关联。
6、END_RESPONSE
结束请求处理循环。
参考资料来源:
网络—ajp
㈢ ajp是什么在网络上如何应用
AJP是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过TCP连接和SERVLET容器连接。为了减少进程生成socket的花费,WEB服务器和SERVLET容器之间尝试保持持久性的TCP连接,对多个请求/回复循环重用一个连接。一旦连接分配给一个特定的请求,在请求处理循环结束之前不会在分配。换句话说,在连接上,请求不是多元的。这个是连接两端的编码变得容易,虽然这导致在一时刻会有很多连接。 一旦WEB服务器打开了一个到SERVLET容器的连接,连接处于下面的状态: ◆ 空闲 这个连接上没有处理的请求。 ◆ 已分派 连接正在处理特定的请求。 一旦一个连接被分配给一个特定的请求,在连接上发送的基本请求信息是高度压缩的。在这点,SERVLET容器大概准备开始处理请求,当它处理的时候,它能发回下面的信息给WEB服务器: ◆ SEND_HEADERS 发送一组头到浏览器。 ◆ SEND_BODY_CHUNK 发送一块主体数据到浏览器。 ◆ GET_BODY_CHUNK 从请求获得下一个数据如果还没有全部传输完,如果请求内容的包长度非常大或者长度不确定,这是非常必要的。例如上载文件。注意这和HTTP的块传输没有关联。 ◆ END_RESPONSE 结束请求处理循环
㈣ Apache Tomcat AJP协议安全限制绕过漏洞
您好,您可以下载安全补丁或者查看这个漏洞的解释,看看是否是哪句代码出了问题,哪个页面出现的问题?
㈤ 如何给网站免费添加Https加密
首先没有免费的。
1、需要准备好域名、独立服务器或云服务器,支持HTTPS加密的服务器才可以。
2、淘宝Gworg获取证书。
3、对应自己的服务器环境拿到教程安装到服务器完成。
4、测试网站后台源码是否正常,如果地址栏没有出现小锁,删除HTTP普通协议调用数据就可以了。
㈥ 无视Https证书是不是正确的Java Http Client
无视Https证书是不是正确的Java Http Client
www.MyException.Cn 网友分享于:2013-11-10 浏览:5次
无视Https证书是否正确的Java Http Client
需要保证通讯的端到端安全,大家一致认为Https方式最适合,但需要评估性能代价。
采取ajp connector貌似无法直接使用httpd2进行load balance了,而且proxy模式的性能实在是让人心寒;jk connector如果tomcat不配ssl,据说需要forward一下,还没有搞定。
为了测试性能,写了个可以无视Https证书是否正确都能连接的Java Http Client。以为很简单的一段代码,绕是迈过了两个小门槛,才搞定的。code可以拿出来晒一晒了。
运行环境jdk1.6,不需要其它类库。
package test;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
/**
* 无视Https证书是否正确的Java Http Client
*
* <p>
* <a href="HttpsUtil.java.html"><i>View Source</i></a>
* </p>
*
* @author <a href="mailto:[email protected]">LiYan</a>
*
* @create Sep 10, 2009 9:59:35 PM
* @version $Id$
*/
public class HttpsUtil {
/**
* 忽视证书HostName
*/
private static HostnameVerifier ignoreHostnameVerifier = new HostnameVerifier() {
public boolean verify(String s, SSLSession sslsession) {
System.out.println("WARNING: Hostname is not matched for cert.");
return true;
}
};
/**
* Ignore Certification
*/
private static TrustManager = new X509TrustManager() {
private X509Certificate[] certificates;
@Override
public void checkClientTrusted(X509Certificate certificates[],
String authType) throws CertificateException {
if (this.certificates == null) {
this.certificates = certificates;
System.out.println("init at checkClientTrusted");
}
}
@Override
public void checkServerTrusted(X509Certificate[] ax509certificate,
String s) throws CertificateException {
if (this.certificates == null) {
this.certificates = ax509certificate;
System.out.println("init at checkServerTrusted");
}
// for (int c = 0; c < certificates.length; c++) {
// X509Certificate cert = certificates[c];
// System.out.println(" Server certificate " + (c + 1) + ":");
// System.out.println(" Subject DN: " + cert.getSubjectDN());
// System.out.println(" Signature Algorithm: "
// + cert.getSigAlgName());
// System.out.println(" Valid from: " + cert.getNotBefore());
// System.out.println(" Valid until: " + cert.getNotAfter());
// System.out.println(" Issuer: " + cert.getIssuerDN());
// }
}
@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}
};
public static byte[] doGet(String urlString) {
ByteArrayOutputStream buffer = new ByteArrayOutputStream(512);
try {
URL url = new URL(urlString);
/*
* use ignore host name verifier
*/
HttpsURLConnection.setDefaultHostnameVerifier(ignoreHostnameVerifier);
HttpsURLConnection connection = (HttpsURLConnection) url
.openConnection();
// Prepare SSL Context
TrustManager[] tm = { };
SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");
sslContext.init(null, tm, new java.security.SecureRandom());
// 从上述SSLContext对象中得到SSLSocketFactory对象
SSLSocketFactory ssf = sslContext.getSocketFactory();
connection.setSSLSocketFactory(ssf);
InputStream reader = connection.getInputStream();
byte[] bytes = new byte[512];
int length = reader.read(bytes);
do {
buffer.write(bytes, 0, length);
length = reader.read(bytes);
} while (length > 0);
// result.setResponseData(bytes);
System.out.println(buffer.toString());
reader.close();
connection.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
}
return buffer.toByteArray();
}
public static void main(String[] args) {
String urlString = "https://www.google.com/adsense/";
String output = new String(HttpsUtil.getMethod(urlString));
System.out.println(output);
}
}
㈦ tomcat ssl 怎么配置pem 和key文件
下载APR依赖: APR 1.2+ development headers (libapr1-dev package)
下载OpenSSL依赖:OpenSSL 0.9.7+ development headers (libssl-dev package)
准备依赖包
解压缩tomcat_home/bin/tomcat-native.tar.gz
进入目录:tomcat-native-1.1.20-src/jni/native 详细安装见此目录下的BUILDING文件
执行 export JAVA_HOME=/prog/java/jdk 设置
执行:./configure --with-apr=/usr/bin --with-ssl=/usr/bin
执行:make
执行:sudo make install -->安装到/usr/local/apr/lib
执行:ln -s /usr/local/apr/lib/libtcnative-1.so $JAVA_HOME/jre/lib/amd64/
重新启动tomcat看到:
Sep 3, 2010 9:56:17 PM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.
Sep 3, 2010 9:56:18 PM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Sep 3, 2010 9:56:18 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Failed to initialize the SSLEngine.
Sep 3, 2010 9:56:18 PM org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8782
Sep 3, 2010 9:56:18 PM org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8711
Sep 3, 2010 9:56:18 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 840 ms
配置SSL
非APR的SSL配置步骤
创建keystore:
jdk/bin/keytool -genkey -keystore tomcat.keystore -alias tomcat -keyalg RSA
把tomcat.keystore放入${user.home}目录中,就是你的用户目录,当然你可以放入其他目录中
修改tomcat的server.xml,增加Connector:
Xml代码
APR环境的SSL配置(ssl不使用apr):
<Connector port="9145" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
URIEncoding="UTF-8"
keystoreFile="${user.home}/tomcat.keystore" keystorePass="cms4g-proxy-PaSsWoRd"
maxThreads="20"
/>
如果还是按照上面的#非APR的SSL配置步骤进行ssl配置,那么需要这么做:
在Connector中配置protocol=org.apache.coyote.http11.Http11NioProtocol
<Connector port="9145" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"
protocol="org.apache.coyote.http11.Http11NioProtocol"
URIEncoding="UTF-8"
keystoreFile="${user.home}/tomcat.keystore" keystorePass="cms4g-proxy-PaSsWoRd"
maxThreads="20"
/>
但启动时会提示错误:Failed to initialize the SSLEngine.
Sep 3, 2010 10:49:42 PM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.
Sep 3, 2010 10:49:43 PM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Sep 3, 2010 10:49:43 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: Failed to initialize the SSLEngine.
Sep 3, 2010 10:49:43 PM org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8782
Sep 3, 2010 10:49:43 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Sep 3, 2010 10:49:43 PM org.apache.coyote.http11.Http11NioProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-9145
Sep 3, 2010 10:49:43 PM org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8711
Sep 3, 2010 10:49:43 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1162 ms
虽然提示信息:Failed to initialize the SSLEngine.但ssl依然可以正常运行,要抑制此信息只要修改server.xml配置apr的sslengine=off即可,如
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />
启动信息
Sep 3, 2010 10:51:53 PM org.apache.catalina.core.AprLifecycleListener init
INFO: Loaded APR based Apache Tomcat Native library 1.1.20.
Sep 3, 2010 10:51:53 PM org.apache.catalina.core.AprLifecycleListener init
INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
Sep 3, 2010 10:51:54 PM org.apache.coyote.http11.Http11AprProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8782
Sep 3, 2010 10:51:54 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Sep 3, 2010 10:51:54 PM org.apache.coyote.http11.Http11NioProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-9145
Sep 3, 2010 10:51:54 PM org.apache.coyote.ajp.AjpAprProtocol init
INFO: Initializing Coyote AJP/1.3 on ajp-8711
Sep 3, 2010 10:51:54 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1081 ms
㈧ ajp文件用什么软件打开,急用!
AutoCAD的DWG文件是一个标准的文件格式,你可以使用AUTOCAD开放,但有DWG格式文件R14,多个版本的R2000,R2004等,但通常是向下兼容的,可以打开R14,2000,2004其他ACAD2004 DWG文件类型,但反过来不能打开与创建ACAD2000 ACAD2004 DWG文件时,系统会提示您该文件是由不兼容的CAD版本创建的。
㈨ eclipse 中的 tomcat服务器,设置中有个ports ajp/1.3 是个什么东东
AJP是一中TCP/IP协议,具体介绍看帖子吧。http://my.oschina.net/czg/blog/142616
㈩ 跪求:windows版tomcat老是报"ajp-apr-8009-exec-7" java.lang.OutOfMemoryError: PermGen space怎么解决
关闭tomcat服务,然后去到Tomcat/ bin目录并运行tomcat6w.exe。在“Java”的选项卡,添加参数到“Java选项”对话框。点击“确定”,然后重新启动该服务。