Jsch를 사용하여 Java 서블릿에 보안 FTP를 설정하고 Windows에서 실행하고 Eclipse에서 개발했습니다. 그래서 현재 SFTP 세부 사항, 즉 사용자 이름 등을 데이터베이스 테이블에 저장하여 텍스트 파일에 배치 한 Windows 레지스트리의 HostKey 값과 내가 가지고있는 텍스트 파일의 위치를 제외하고 보안 설정을 구성 할 수 있습니다. 필드에 표시됩니다. SFTP 세부 정보를 객체로 얻은 후 다음 코드는 텍스트 파일에서 HostKey를 가져옵니다.데이터베이스에서 Jsch HostKey 값을 읽는 방법
String SFTPFile = SFTPD.getSftp_file();
jsch.setKnownHosts(SFTPFile);
이 잘 작동하지만 나는 텍스트 파일을 손상, 제거 또는 변조에 취약하기 때문에뿐만 아니라 데이터베이스에 호스트 키를 읽고 싶어. 나는 다음을 시도했다.
InputStream IS = new ByteArrayInputStream(SFTPD.getSftp_hostkey().getBytes());
Channel channel = null;
ChannelSftp channelsftp = null;
JSch jsch = new JSch();
com.jcraft.jsch.Session session = jsch.getSession(SFTPUsername, SFTPHost, SFTPPort);
try {
session.setPassword(SFTPPassword);
jsch.setKnownHosts(IS);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelsftp = (ChannelSftp)channel;
하지만 디버깅 할 때 아래 오류가 발생합니다. 이 문제를 해결하고 테이블에서 값을 읽으려면 어떻게해야합니까?
15-Oct-2014 14:45:02 com.sun.xml.ws.transport.http.servlet.WSServletDelegate doGet
SEVERE: caught throwable
javax.xml.ws.WebServiceException: com.ctc.wstx.exc.WstxIOException: null
at com.sun.xml.ws.encoding.StreamSOAPCodec.encode(StreamSOAPCodec.java:130)
at com.sun.xml.ws.encoding.SOAPBindingCodec.encode(SOAPBindingCodec.java:285)
at com.sun.xml.ws.transport.http.HttpAdapter.encodePacket(HttpAdapter.java:421)
at com.sun.xml.ws.transport.http.HttpAdapter.access$100(HttpAdapter.java:99)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:650)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:263)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.invokeAsync
(ServletAdapter.java:218)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet
(WSServletDelegate.java:159)
at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost
(WSServletDelegate.java:194)
at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:80)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke
(AuthenticatorBase.java:581)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process
(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process
(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.ctc.wstx.exc.WstxIOException: null
at com.ctc.wstx.sw.BaseStreamWriter.writeCharacters(BaseStreamWriter.java:511)
at com.sun.xml.ws.util.xml.XMLStreamWriterFilter.writeCharacters
(XMLStreamWriterFilter.java:99)