Java Scp проблема - PullRequest
       7

Java Scp проблема

0 голосов
/ 17 мая 2011

У меня возникла ситуация, которую мне нужно разрешить. Мне нужно загрузить определенные элементы XML-файла, чтобы загрузить его на сервер, мне удалось это сделать, и я создал демонстрационный метод, чтобы проверить, загружается ли файл на сервер или нет.

Мой xml-файл имеет структуру,

<config>
 <engine>
    <eid>1</eid>
    <sometextelement>text</sometextelement>
 </engine>

 <engine>
    <eid>2</eid>
    <sometextelement>text</sometextelement>
 </engine>

 <engine>
    <eid>3</eid>
    <sometextelement>text</sometextelement>
 </engine>


</config>

и вот мой код сервлета:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("application/json");
        //response.setHeader("Cache-Control", "no-cache");
         PrintWriter out = response.getWriter();
         JSONObject obj = new JSONObject();
         String value = request.getParameter("value");
            String message = "";
            String update = "";
            Element element = null;
            Element root = null;
            XMLOutputter xmlOutputter = new XMLOutputter();
        try{
        doc = saxBuilder.build("E:/workbench j2ee/cPEP_UI/WebContent/engine.xml");

        }catch(Exception e){
            e.printStackTrace();
        }
        root = doc.getRootElement();
        List list = doc.getRootElement().getChildren();
        Iterator itr = list.iterator();
        while(itr.hasNext()){
             element = (Element)itr.next();
            System.out.println("Entered 1");
          File f = File.createTempFile("engine_",".xml");
           System.out.println(f);
            xmlOutputter.output(element, new FileWriter(f));

            putFile(f);
        }



         // xmlOutputter.output(doc, new FileWriter("E:/workbench j2ee/cPEP_UI/WebContent/engine.xml"));





        // System.out.println("hello from system");
        // out.println("hello");



    }

    public void putFile(File f){
         System.out.println("File String: "+f.toString());
         Connection Conn = null;
          try {
           Conn = new Connection("ftp.someserver.co.uk",22);
           ConnectionInfo info = Conn.connect();
           Conn.authenticateWithPassword("webmaster@someserver.co.uk", "mypass");
           SCPClient SCP = new SCPClient(Conn);
           SCP.put(f.toString(), "/public_html/webmaster", "0755");
           Conn.close();
          } catch (Exception e) {
           try {
            Conn.close();
           } catch (Exception e1) {}
    }
    }

Теперь, из приведенного выше кода я получаю файл, созданный для механизма 1, двигателя 2 и двигателя 3, и это то, что я хотел, но теперь я хочу, чтобы он также загружался на сервер. и код putFile не работает вообще. Порт также идеален. Что тогда не так? есть идеи?

Вот ошибка:

java.io.IOException: There was a problem while connecting to ftp.someserver.co.uk:22
    at ch.ethz.ssh2.Connection.connect(Connection.java:699)
    at ch.ethz.ssh2.Connection.connect(Connection.java:490)
    at Push_Individual_Engine.putFile(Push_Individual_Engine.java:106)
    at Push_Individual_Engine.doPost(Push_Individual_Engine.java:81)
    at Push_Individual_Engine.doGet(Push_Individual_Engine.java:47)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:529)
    at ch.ethz.ssh2.transport.TransportManager.establishConnection(TransportManager.java:340)
    at ch.ethz.ssh2.transport.TransportManager.initialize(TransportManager.java:448)
    at ch.ethz.ssh2.Connection.connect(Connection.java:643)
    ... 18 more

1 Ответ

0 голосов
/ 17 мая 2011

Как вы упомянули, эта ошибка обычно возникает, если Ip / имя домена или порт неверны, вы пытались сделать telnet из того же окна, в котором запущена ваша java-программа? Может быть проблема с брандмауэром, если порт и имя в порядке, или проблема с DNS, если ваш ящик не может правильно определить домен.

...