Ir para o conteúdo
joaoctm123

Jcraft .jar

Mensagens Recomendadas

joaoctm123

Boa Noite,

Estou a fazer um projecto para a Universidade, e foi dado um servidor MySQL, com uma conexão SSH ao servidor. Em Java já consegui efectuar a conexão. Estou a usar o NetBeans e para usar certos package (ex: import com.jcraft.jsch.JSch;) tenho que adicionar um ficheiro .jar ao projecto, nas libraries. Já adicionei o MySQL connector e o JCraft. A questão é que apenas consigo utilizar a classe criada no NetBeans, mas se for a correr na consola do Windows dá erro. Há uns tempos atrás verifiquei que para se utilizar o Connector/J, ou tinha que escrever na linha de comandos do Windows a directoria do ficheiro ou colocar o ficheiro .jar na pasta C:\Program Files\Java\jre7\lib\ext. Experimentei colocar também o JCraft também na mesma pasta mas não deu continuou a dar erros. Haverá maneira de correr a classe sem ser no NetBeans. Outra questão, ao utilizar a conexão SSH ao servidor no futuro não vai dar problema em Android, porque também vou criar em Android.

JCraft; http://www.jcraft.com/jsch/

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.sql.Connection;


public class MySqlConnOverSSH {

/**
 * Java Program to connect to remote database through SSH using port forwarding
 * @author Pankaj@JournalDev
 * @throws SQLException
 */
public static void main(String[] args) throws SQLException {

 int lport=5656;
 String rhost="";
 String host="";
 int rport=3306;
 String user="";
 String password="";
 String dbuserName = "";
 String dbpassword = "";
 String url = "jdbc:mysql://localhost:"+lport+"/db";
 String driverName="com.mysql.jdbc.Driver";
 Connection conn = null;
 Session session= null;
 try{
	 //Set StrictHostKeyChecking property to no to avoid UnknownHostKey issue
	 java.util.Properties config = new java.util.Properties();
	 config.put("StrictHostKeyChecking", "no");
	 JSch jsch = new JSch();
	 session=jsch.getSession(user, host, 22);
	 session.setPassword(password);
	 session.setConfig(config);
	 session.connect();
	 System.out.println("Connected");
	 int assinged_port=session.setPortForwardingL(lport, rhost, rport);
	 System.out.println("localhost:"+assinged_port+" -> "+rhost+":"+rport);
	 System.out.println("Port Forwarded");

	 //mysql database connectivity
	 Class.forName(driverName).newInstance();
	 conn = DriverManager.getConnection (url, dbuserName, dbpassword);
	 System.out.println ("Database connection established");
	 System.out.println("DONE");
 }catch(Exception e){
	 e.printStackTrace();
 }finally{
	 if(conn != null && !conn.isClosed()){
		 System.out.println("Closing Database Connection");
		 conn.close();
	 }
	 if(session !=null && session.isConnected()){
		 System.out.println("Closing SSH Connection");
		 session.disconnect();
	 }
 }
}

}

PS: Este código é o que estou a utilizar e está a funcionar.

Cumps

Obrigado :)

Editado por Baderous
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.