Ola vai ai um exemplo, este codigo escuta uma porta http e executa
uma procedure no Oracle e faz uma consulta de sysdate no banco,
espero que sirva para voce usar como exemplo:
package com.cds;
//Servidor que escuta porta predefinida e grava texto recebido em
tabela
//xml de trabalho em coluna CLOB
/**
Metodos:
Servidor XmlServer
Escrever arquivo de log das conexoes recebidas
Conexao jdbc
Ecoar na console erros de jdbc
Gravacao arquivo xml em filesystem
Executa procedure de validacao passando arquivo xml como parametro
Retorna resultado para cliente XmlClient
Encerra conexao
*/
import java.io.*;
import java.net.*;
import java.sql.*;
import oracle.jdbc.driver.*;
public class XmlServer {
//Variaveis de classe
public static final int PORT = 8080; // Escolha porta fora do
intervalo de 1-1024:
public static Connection m_connection=null; //Objeto de conexao ao
banco de dados
//Metodo que cria conexao JDBC
public static boolean dbConnection(String dbUser,String
dbPasswd,String dbHost,String dbPort,String dbSID){
try{
// Carrega conexao Oracle JDBC Driver e registra.
DriverManager.registerDriver(new
oracle.jdbc.driver.OracleDriver());
// Monta string de conexao usando parametros especificados em
ParamConexao.java
String l_dbConnectString =
"(DESCRIPTION=(ADDRESS=(HOST=" + dbHost +")"+
"(PROTOCOL=tcp)(PORT=" + dbPort + "))"+
"(CONNECT_DATA=(SID=" + dbSID + ")))";
m_connection =
DriverManager.getConnection("jdbc:oracle:thin:@"+l_dbConnectString,dbUser,dbPasswd);
m_connection.setAutoCommit(false);
return true;
}catch(SQLException ex){ //Pega erros de SQL
System.out.println("Erro na conexao ao banco de dados: " +
ex.toString());
return false;
}
} // Fim dbConnection()
//Metodo main "escuta de porta http"
public static void main(String[] args)
throws IOException {
//Buscar parametros
String dbHost = args[0];//192.168.10.26
String dbPort = args[1];//1521
String dbSID = args[2];//ORACLE
String dbUser = args[3];//system
String dbPasswd = args[4];//manager
String xPath = args[5];//c:\\yonamine\\cds_work\\work\\
String xFileName = args[6];//xml_recebido.xml;
String sProcName = args[7];//xml.sp_valida_xml
System.out.println("**************************************************************");
System.out.println("*");
System.out.println("* XmlServer 1.0 - Copyright(C) 2001 CDS 2002
");
System.out.println("*");
System.out.println("* Servidor de solicitacao multiplataforma
(JAVA 2Enterprise Edition)");
System.out.println("* Funcoes:");
System.out.println("* Receber texto \"XML\" via
\"http\"");
System.out.println("* Gerar arquivo texto \"XML\" no
sistema
operacional");
System.out.println("* Conectar banco de dados \"ORACLE\"
via
\"JDBC\"");
System.out.println("* Disparar \"Stored Procedure\" de
validacao \"XML\" e negocio");
System.out.println("* Retornar mensagem \"XML\" ao
solicitante");
System.out.println("* Aguardar nova solicitacao");
System.out.println("*");
System.out.println("* Rotinas \"JAVA\" inicializadas...");
System.out.println("*");
//Chamada de conexao jdbc
boolean dbOk = dbConnection(dbUser,dbPasswd,dbHost,dbPort,dbSID);
// Inicializa o objeto de conexao com o banco de dados
if(dbOk == true){
System.out.println("* Conexao ao banco de dados
inicializada");
System.out.println("* Servidor de banco: " + dbHost);
System.out.println("* Database :" + dbSID );
}
//Pesquisando o banco para buscar data atual do servidor
String sData="";
try{
Statement l_statement=m_connection.createStatement(); // Cria
comando de pesquisa
String l_query="SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY hh24:mi:ss')
FROM DUAL";
ResultSet l_dset=l_statement.executeQuery(l_query); // Executa
pesquisa
l_dset.next();
sData=l_dset.getString(1); //Data em formato string
}catch(SQLException ex){
System.out.println("*Erro SQL:" + ex.getMessage());
}
//Cria socket
ServerSocket s = new ServerSocket(PORT);
System.out.println("*");
System.out.println("* Servidor de conexao inicializado:");
System.out.println("* Endereco :" +
s.getInetAddress());
System.out.println("* Porta :" + s.getLocalPort());
System.out.println("*");
System.out.println("* XMLServer inicializado com sucesso em "
+ sData);
+
System.out.println("*");
System.out.println("* Aguardando requisicao inicial...");
System.out.println("**************************************************************");
System.out.println("*");
int numConexoes = 0;
try {
//Loop infinito para manter XmlServer no ar ...
while(true){
// Bloco executado enquanto a conexao ocorre:
Socket socket = s.accept();
try {
numConexoes = numConexoes + 1;
//
System.out.println("**************************************************************");
System.out.println("--------------------------------------------------------------");
System.out.println("- Conexao #" + numConexoes + "
Originada em:
"+ socket.getInetAddress() + " port:" + socket.getPort());
// System.out.println("* Conexao #" + numConexoes + "
Originada
em: "+ socket.getInetAddress() + " port:" + socket.getPort());
//Buffer de leitura de linhas enviadas pelo XmlClient
BufferedReader in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
// Lendo todas linhas recebidas e gravando em arquivo
no sistema
operacional
BufferedWriter outFile = new BufferedWriter(new
FileWriter(xPath
+ xFileName));
int numLinhas = 0;
while (true) {
numLinhas = numLinhas + 1;
String str = in.readLine();
if (str.equals("END")) break;
outFile.write(str + "\n");//fim de linha
}
/*
while ((in.readLine()) != null) {
numLinhas = numLinhas + 1;
String str = in.readLine();
outFile.write(str + "\n");//fim de linha
}
*/
outFile.close();//Fecha canal escrita arquivo
// System.out.println("* " + numLinhas + " linhas
\"XML\"
lidas.");
// System.out.println("* Arquivo \"" + xFileName + "\"
gravado
em:\"" + xPath + "\"");
System.out.println("- " + numLinhas + " linhas
\"XML\" lidas.");
System.out.println("- Arquivo \"" + xFileName + "\"
gravado
em:\"" + xPath + "\"");
//Executar stored procedure de validacao
int nRetorno = 0;
System.out.println("- Executando rotina de validacao
de xml e
negocio...");
// System.out.println("* Executando rotina de validacao
de xml e
negocio...");
try{
CallableStatement st =
m_connection.prepareCall("{call " +
sProcName + "(?,?)}");
//Parametros de entrada
st.setString(1, xPath + xFileName);
//Parametros de saida
st.registerOutParameter(2,java.sql.Types.INTEGER);
//Executa a procedure
System.out.println("- Executando procedure " +
sProcName);
// System.out.println("* Executando procedure " +
sProcName);
st.execute();
//Gravar o variaveis de trabalho com resultado
da validacao
nRetorno = st.getInt(2);
//Captura erros SQL
}catch(SQLException ex){
System.out.println("*Erro SQL:" +
ex.getMessage());
}
//Canal de saida de XmlServer p/ XmlClient
PrintWriter out = new PrintWriter(new
BufferedWriter(new
OutputStreamWriter(socket.getOutputStream())),true);
//Enviando xml de retorno
if(nRetorno == 0){
//XML aknowledgement message OK
System.out.println("- Enviando mensagem
\"XML\" de retorno
\"OK\" com sucesso...");
// System.out.println("* Enviando mensagem
\"XML\" de retorno
\"OK\" com sucesso...");
out.println(" <CCCResponse>");
out.println(" <!--Message generated by CDS -
copyright 2002 CDS
-->");
out.println(" <text>OK</text>");
out.println(" <Status
code=\"200\"/>");
out.println(" <CCCResponse>");
out.println("END");
}
else{
//XML aknowledgement message NOTOK
System.out.println("- Enviando mensagem
\"XML\" de retorno
\"NOTOK\" com erros...");
// System.out.println("* Enviando mensagem
\"XML\" de retorno
\"NOTOK\" com erros...");
out.println(" <CCCResponse>");
out.println(" <!--Message generated by CDS -
copyright 2002 CDS
-->");
out.println(" <text>NOTOK</text>");
out.println(" <Status
code=\"300\"/>");
out.println(" <CCCResponse>");
out.println("END");
}
out.close();
// Fechar o XmlServer e XmlClient...
} finally {
// System.out.println("* Conexao #" + numConexoes + "
encerrada...");
System.out.println("- Conexao #" + numConexoes + "
encerrada...");
System.out.println("--------------------------------------------------------------");
//
System.out.println("**************************************************************");
System.out.println("*");
System.out.println("* Aguardando nova requisicao...");
System.out.println("*");
socket.close();
}
}//while
} finally {
}
}
} ///:~
--- [EMAIL PROTECTED] wrote:
> Oi pessoal
>
> Estou com um probleminha que se divide em duas partes:
>
> 1- Como eu faco para executar um bloco de comando PL/SQL.
>
> 2- E possivel executar via arquivo, por exemplo:
>
> executeUpdate("plsql.txt");
>
> Alguem ja passou por esse drama????????????
>
> Obrigado
>
> Andre
>
> _________________________________________________________
> Oi! Voc� quer um iG-mail gratuito?
> Ent�o clique aqui: http://www.ig.com.br/paginas/assineigmail.html
>
>
> ------------------------------ LISTA SOUJAVA
> ----------------------------
> http://www.soujava.org.br - Sociedade de Usu�rios Java da
> Sucesu-SP
> d�vidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> para sair da lista: envie email para
> [EMAIL PROTECTED]
>
-------------------------------------------------------------------------
>
=====
Marcos Yonamine
Consultor Tecnologia
11 9118 4983
[EMAIL PROTECTED]
www.welcome.to/yonamine
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - Buy the things you want at great prices.
http://auctions.yahoo.com/
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br - Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------