Stored Procedure e URL

8 respostas
P

Criei uma classe java para acessar uma url e coloquei no DB Oracle, segue:

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED
JasperreportWeb as
	import java.awt.Desktop;
	import java.io.IOException;
	import java.net.MalformedURLException;
	import java.net.URI;
	import java.net.URISyntaxException;
	
	public class JasperreportWeb{
		public static java.lang.String chamaUrl(java.lang.String url){
			Desktop desktop = null;  
			desktop = Desktop.getDesktop();  
			URI uri = null;
			uri = new URI(url);  
			desktop.Browse(uri);
			return 'TESTE';
		}
	}

Então criei uma procedure para acessar a função acima:

CREATE OR REPLACE FUNCTION CHAMA_URL_P(URL IN VARCHAR2) RETURN VARCHAR2
	IS LANGUAGE JAVA NAME 'JasperreportWeb.chamaUrl(java.lang.String) return java.lang.String';

Tentei rodar a procedure pelo banco mesmo:

DECLARE
  V_RETORNO VARCHAR2(100);
BEGIN
  V_RETORNO := CHAMA_URL_P('http://www.google.com.br');
END;

mas surge o seguinte erro:

ORA-29541: não foi possível resolver a classe JasperreportWeb
ORA-06512: em “CHAMA_URL_P”, line 1
ORA-06512: em line 4
29541. 00000 - “class %s.%s could not be resolved”
*Cause: An attempt was made to execute a method in a Java class
that had not been previously and cannot now be compiled
or resolved successfully.
*Action: Adjust the call or make the class resolvable.

O que pode estar errado?

8 Respostas

Aleksandro

Qual é a versão do seu oracle , se você tiver usando o XE , esquece porque ele não suporta compilar códigos java.

P

Estou usando a versão 11g

Aleksandro

Ok, então vamos lá …

JasperreportWeb este cara rodou certinho ? não há erros ?

P

Tanto a classe quanto a função que uso para chamá-la compilaram sem erros.

Aleksandro

Se chegou a conceder os grants necessários para rodar java em pl/sql ?

rode o select abaixo verifica se retorna true:

select value from V$option where parameter='Java'
P

Retornou TRUE.

Aleksandro

Estranho …troca sua url por localhost e veja se funciona …vc tá usando um ambiente seu ou da empresa ?

P

Estou usando o ambiente da empresa. Tentei trocar a url por localhost e ainda ocorre o mesmo erro.

Mudei a rotina, de função para procedure mas nada mudou:

exec chama_url_p('localhost')
Criado 2 de outubro de 2012
Ultima resposta 3 de out. de 2012
Respostas 8
Participantes 2