CMP ou Session EJBs na ligação JDBC?

2 respostas
Claudia.pt

Olá trabalhadores!!
Estou com uma dúvida… todos os artigos/posts que vejo pra configurar no JBoss (4.0.2) a ligação JDBC ao SQL Server 2000 falam que é preciso, entre outras coisas, alterar o ficheiro /server/default/conf/standardjbosscmp-jdbc.xml
Este ficheiro não é apenas se eu usar Entity CMP beans?? :?
Corrijam-me se não estou certa: pra ligar à Base de dados usa-se session bean??

Outra coisa: só devo usar o ficheiro DBProvider-XA-DS.xml se usar JMS??

Thanks
Claudia

2 Respostas

pcalcado

Olá, CLáudia,

Sim, apenas se usar CMP. O que você precisa é configurar um datasource :wink:

Claudia.pt

[color=red]Pra ligar à Base de dados usam-se session bean (e não Entity)?? Certo???

Porque é que mta gente usa CMP???[/color]
O que quero é configurar o datasource MS SQL Server2000 para o JBoss 4.0.2.
Segui um artigo e fiz o seguinte:

  1. Start MS SQL Server com sql authentication 'sa’
    Criei uma base de dados de nome Jboss
  2. Copiei o ficheiros jar do driver JDBC (msutil, msbase, mssqlserver) e pus no directorio in \server\default\lib
  3. Copiei mssql-ds.xml do directorio \docs\examples\jca\ e pus no directorio \server\default\deploy.
    Modifiquei
    [color=blue]<?xml version="1.0" encoding="UTF-8"?>
...

sa

… [/color]
3. Restart JBoss.
Na JMX Console, em jboss.jdbc foi adicionado datasource=MSSQLDS.service=metadata

  1. No directorio \server\default\conf\standardjaws.xml configurei

[color=blue]<?xml version="1.0" encoding="UTF-8"?>

java:/MSSQLDS
MS SQLSERVER2000

… [/color]

  1. No directorio \server\default\conf\standardjbosscmp-jdbc.xml configurei

[color=blue]<?xml version="1.0" encoding="UTF-8"?>

java:/MSSQLDS
MS SQLSERVER2000

… [/color]

  1. No directorio \server\default\conf\login-config.xml configurei

[color=blue]…


sa
sa

jboss.jca:service=LocalTxCM,name=MSSQLDS

[/color]

Está certo??
[color=red]1º Problema :[/color] esta configuração é pra CMP Entity beans. Certo?
como faço para session beans??
[color=red]2º Problema :[/color] escrevi um session ejb muito simples. Como posso fazer interagi-lo com a base de dados??

Antes de começar a usar o eclipse e o jboss, eu usava a classe seguinte

[color=blue]import java.*;

public class Connect{

private java.sql.Connection con = null;

private final String url = jdbc:microsoft:sqlserver://”;

private final String serverName= FRC-GIIT-CIRKUS;

private final String portNumber = 850;

private final String databaseName= pubs;

private final String userName = sa;

private final String password = “”;

// Informs the driver to use server a side-cursor,

// which permits more than one active statement

// on a connection.

private final String selectMethod = cursor;

// Constructor
public Connect(){}

private String getConnectionUrl(){

return url+serverName+":"+portNumber+";databaseName="+databaseName+";selectMethod="+selectMethod+";";

}
private java.sql.Connection getConnection(){

try{

Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);

con = java.sql.DriverManager.getConnection(getConnectionUrl(),userName,password);

if(con!=null) System.out.println(Connection Successful!);

}catch(Exception e){

e.printStackTrace();

System.out.println("Error Trace in getConnection() : " + e.getMessage());

}

return con;

}

/*
Display the driver properties, database details
*/

public void displayDbProperties(){

java.sql.DatabaseMetaData dm = null;

java.sql.ResultSet rs = null;

try{

con= this.getConnection();

if(con!=null){

dm = con.getMetaData();

System.out.println(Driver Information);

System.out.println("\tDriver Name: “+ dm.getDriverName());

System.out.println(”\tDriver Version: “+ dm.getDriverVersion ());

System.out.println(”\nDatabase Information “);

System.out.println(”\tDatabase Name: “+ dm.getDatabaseProductName());

System.out.println(”\tDatabase Version: "+ dm.getDatabaseProductVersion());

System.out.println("Avalilable Catalogs “);

rs = dm.getCatalogs();

while(rs.next()){

System.out.println(”\tcatalog: "+ rs.getString(1));

}

rs.close();

rs = null;

closeConnection();

}else System.out.println(Error: No active Connection);

}catch(Exception e){

e.printStackTrace();

}

dm=null;

}
private void closeConnection(){

try{

if(con!=null)

con.close();

con=null;

}catch(Exception e){

e.printStackTrace();

}

}
public static void main(String[] args) throws Exception

{

Connect myDbTest = new Connect();

myDbTest.displayDbProperties();

}

} [/color]

Ainda posso usar esse código? Onde o ponho???

Por favor ajudem, pois estou encravadissima :frowning:
Thanks Claudia

Criado 17 de agosto de 2005
Ultima resposta 17 de ago. de 2005
Respostas 2
Participantes 2