我正在开发一个应用程序,其中大部分工作与aws S3交互。 初步情况: Domino:版本9.0.1FP6。 使用aws实用程序在xpages上的应用程序与readBucket,downloadFile,createBucket等的典型功能完美配合。 对于应用需求,由于它的重量,我需要分离它的逻辑并尝试三种方法进行分离。
控制台Java:
启动http://localhost/proves \ s3.nsf / demo.xsp
java.lang.NullPointerException - >在sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:727)
控制台Domino
错误日志-0.xml
IBM_TECHNICAL_SUPPORT \ xpages_exc.log
我认为问题可能在于使用这种机制,因为它不安全,如果从浏览器访问demo.xsp,它将运行整个加载的aws xon默认凭据。
控制台Java:
应用程序逻辑的分离方法是否正确? 关于为什么SSL的第三个程序失败的任何建议?
提前致谢
编辑:您好,代码XAgent(代理属性安全标签= 3)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import javax.net.ssl.SSLSocketFactory;
import lotus.domino.AgentBase;
public class JavaAgent extends AgentBase {
// Change these settings below to your setup as required.
static final String hostName = "localhost";
static final String urlFilepath = "/proves/s3.nsf/demo.xsp";
static final int sslPort = 443;
public void NotesMain() {
try {
final SSLSocketFactory factory = (SSLSocketFactory) SSLSocketFactory.getDefault();
final Socket socket = factory.createSocket(JavaAgent.hostName, JavaAgent.sslPort);
final BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
final BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
final StringBuilder sb = new StringBuilder();
sb.append("GET ");
sb.append(JavaAgent.urlFilepath);
sb.append(" HTTP/1.1\n");
final String command = sb.toString();
sb.setLength(0);
sb.append("Host: ");
sb.append(JavaAgent.hostName);
sb.append("\n\n");
final String hostinfo = sb.toString();
out.write(command);
out.write(hostinfo);
out.flush();
in.close();
out.close();
socket.close();
} catch (final Exception e) {
// YOUR_EXCEPTION_HANDLING_CODE
System.out.println("Exception:" + e);
}
}
}
代码demo.xsp
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.beforePageLoad><![CDATA[#{javascript:
print("demo.xsp --> beforePageLoad ---> Hello Word");
var a = new Array();
a[0] = "mybucket-proves";
a[1] = @UserName();
var s3 = new S3();
var vector:java.util.Vector = s3.mainReadBucket(a);
var i=0;
for ( i = 0; i < vector.size(); i++) {
print("Value:" + vector.get(i));
}
}]]></xp:this.beforePageLoad>
<xp:label value="Demo" id="label1"></xp:label>
</xp:view>
新测试: 虽然这两个bd驻留在同一台服务器上,但是如果这是故障,我在JVM中有一个SSL证书颁发机构,但它仍然会给出相同的错误。 SSLHandshakeException:com.ibm.jsse2.util.j:没有可信证书。
注意:我已在主应用程序中测试了aws库正常工作,此代理程序和demo.xsp页面并遵循相同的错误。
谢谢