Tomcat サーバーの構成の問題に直面しています。
GoDaddy に証明書を要求し、Apache Tomcat 5.x で同じように構成しました。tomcat5.x\conf\server.xml
以下は、 HTTPS 構成のスニペットです。
<Connector port="8443" maxHttpHeaderSize="8192" protocol="HTTP/1.1"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
keystoreFile="/path/to/tomcat.keystore" keystorePass="xxxxxxxxx"
clientAuth="false" sslProtocol="TLS" SSLEnabled="false"/>
https://www.exampleserver.com:8443/servletname
正常に使用して、サーバーにデプロイされたサーブレットにアクセスできます
現在、HTTP 本文の JSON データを使用して HTTP POST 要求を同じサーブレットに送信しようとしています。POST データをサーブレットに記録しようとしていますが、POST データが空であるか、使用できません。
doPost
以下は、次のメソッドでPOST データをログに記録するためのコード スニペットです。Servlet
// Respond with OK and status 200 in a timely fashion to prevent redelivery
response.setContentType("text/html");
Writer writer = response.getWriter();
writer.append("OK");
writer.close();
// Get the notification object from the request body (into a string so we
// can log it)
BufferedReader notificationReader =
new BufferedReader(new InputStreamReader(request.getInputStream()));
String notificationString = "";
// Count the lines as a very basic way to prevent Denial of Service attacks
int lines = 0;
while (notificationReader.ready()) {
notificationString += notificationReader.readLine();
lines++;
// No notification would ever be this long. Something is very wrong.
if (lines > 1000) {
throw new IOException("Attempted to parse notification payload that was unexpectedly long.");
}
}
LOG.info("got raw notification " + notificationString);
Log.info
ステートメントは常に出力さ"got raw notification "
れます。これは、データが利用できなかったことを意味します。
前
興味深い部分は、Servlet
が展開されている場合、または HTTPS ではなく HTTP を使用してアクセスしている場合に機能することです。
アップデート
HTTPとHTTPSでcurl(JSONデータ)を同じように試しましたServlet
が、両方では機能しません。ローカルサーバーでは動作しています。
正直なところ、私は Apache Tomcat サーバーと SSL 証明書を構成する経験があまりありません。GoDaddy が提供する構成手順に従い、もちろん Google の助けを借りました。