Java store procedure that reference a external library.

From: aem <a.e.menendez_at_gmail.com>
Date: Wed, 2 Apr 2008 08:38:21 -0700 (PDT)
Message-ID: <8b1389b4-dc84-48e6-b88b-42ef19e5aa0f@a22g2000hsc.googlegroups.com>


Hi. I have this problem.
I can to compile a java store procedure that reference a external library.
I tested this source in eclipse and execute correctly. I want to copy a file using SFTP from external server to Oracle server.
I have loaded the external library "jsch-0.1.37.jar" using javaload, and compiled the java store procedure. But I have problem with the load and with the java source.
The java source not find the external library.

I use:

Oracle 9.0.2.8.0

loadjava -definer -grant plsql -oci8 -resolve -schema tcm -synonym - user tcm/tcmpass_at_sgfdes.sion -verbose C:\aem\work\jsch-0.1.37.jar

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

create or replace and compile java source named copia_sftp as import com.jcraft.jsch.*;

/**
 *  class Copia_Sftp
 */

public class Copia_Sftp extends Object
{
	public static String ejecutar(String host,
								String user,
								String passwd,
								int port,
								String remote_path,
								String local_path,
								String file_name) {

		String error = "0";
		String message = "";

		try {
			JSch jsch = new JSch();

			Session session = jsch.getSession(user, host, port);

	      // Crea una session .
			UsuarioSFTP ui = new UsuarioSFTP();
			ui.setClave(passwd);
			session.setUserInfo(ui);
			session.connect();

	      // Abre el canal.
			Channel channel = session.openChannel("sftp");
			channel.connect();
			ChannelSftp c = (ChannelSftp) channel;

			try {
				try {
				    c.get(remote_path + file_name, local_path + file_name);
					return ((new String (error + message)));
				} catch (SftpException e) {
					e.printStackTrace();
					error = "1";
					message = e.toString();
					System.out.println(e.toString());
				}

				session.disconnect();
			} catch (Exception e) {
				e.printStackTrace();
				error = "1";
				message = e.toString();
				System.out.println(e);
			}
		} catch (Throwable e) {
			error = "1";
			message = e.toString();
			e.printStackTrace();
		} finally {
			return ((new String (error + message)));
	    }
	}

}
/**
 *  class UsuarioSFTP
 */

public class UsuarioSFTP implements UserInfo,UIKeyboardInteractive
{
	private String clave;
	private String nombre;

	public String getPassphrase() {
		return null;
	}

	public String getPassword() {
	  return clave;
	}

	public boolean promptPassword(String message) {
		return true;
	}

	public boolean promptPassphrase(String message) {
		return true;
	}

	public boolean promptYesNo(String message) {
		return true;
	}

	public void showMessage(String message) {

	}

	public void setClave(String clave) {
		this.clave = clave;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String[] promptKeyboardInteractive(String destination,
											String name,
											String instruction,
											String[] prompt,
											boolean[] echo) {

		String [] resultado = new String [prompt.length];
		resultado [0] = clave;
		return resultado;
	}

}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

When I compile the java store procedure.

Compilation errors for JAVA SOURCE COPIA_SFTP

Error: Interface UIKeyboardInteractive of class UsuarioSFTP not found.
Line: 69
Text: public class UsuarioSFTP implements UserInfo,UIKeyboardInteractive

Error: Interface UserInfo of class UsuarioSFTP not found. Line: 69
Text: public class UsuarioSFTP implements UserInfo,UIKeyboardInteractive

Error: Class JSch not found.
Line: 23
Text: JSch jsch = new JSch();

Thank a lot.
Alvaro Received on Wed Apr 02 2008 - 10:38:21 CDT

Original text of this message