A aplicacao rodando local funciona tranquilo com Class.forName, mas esta outra opcao loadClass nao carrega a classe, pois da excecao no getConnection:
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:532)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
uma pergunta nada a ver com a sua duvida: o seu sistema acessa um BD centralizado num servidor? (imagino q sim) se for assim, eu nao acho uma boa ideia o cliente fazer a conexao com o BD e tudo mais. eu acho q o melhor eh teu servidor manter um WebService (ou algo do tipo) q acesse o BD e esse WebService é acessado pelo cliente…
concordam?
Eu ate concordo, mas eu gostaria de saber, por enquanto, como substituir o codigo do Class.forName() no JWS, pois queria pelo menos ver a aplicacao de teste rodando. Por enquanto nao é uma aplicacao critica, é apenas teste de JWS, blz…
Class driver = cl.loadClass(“org.firebirdsql.jdbc.FBDriver”);
driver.newInstance();
Connection connLocal = DriverManager.getConnection(…);
mas tambem nao funcionou, deu msg:
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at appsaf.(appsaf.java:81)
…
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission FBLog4j read)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
at java.lang.System.getProperty(Unknown Source)
at org.firebirdsql.logging.LoggerFactory.getLogger(LoggerFactory.java:36)
at org.firebirdsql.logging.LoggerFactory.getLogger(LoggerFactory.java:72)
at org.firebirdsql.jdbc.FBDriver.<clinit>(FBDriver.java:66)
Descobri o segte: apos tentar acessar o Firebird, o MSSQL e o MySQL, descobri que, como a application roda em um sand box igual uma applet, ela nao consegue se conectar a nenhum servico do servidor. Portanto, acho que sera necessario assinar todos os JARs, inclusive os JDBCs, com uma mutreta contida em: http://java.sun.com/j2se/1.4.2/docs/guide/jws/developersguide/development.html
para funcionar o acesso ao BD…
[quote=edilmar]Descobri o segte: apos tentar acessar o Firebird, o MSSQL e o MySQL, descobri que, como a application roda em um sand box igual uma applet, ela nao consegue se conectar a nenhum servico do servidor. Portanto, acho que sera necessario assinar todos os JARs, inclusive os JDBCs, com uma mutreta contida em: http://java.sun.com/j2se/1.4.2/docs/guide/jws/developersguide/development.html
para funcionar o acesso ao BD…[/quote]
Funciona sim, é só declarar os JARS no JNLP que ele baixa e utiliza normalmente. Ex:
A assinatura é necessária também para fazer determinadas operações, como conectar-se ao servidor via uma porta TCP/IP, o que é necessário pelos drivers JDBC. Portanto, acho que o caso do JDBC exige assinatura mesmo.
Sim, eu faco assinatura de todos os JARs.
O problema é que a assinatura padrao gerada pelo JDK dura 6 meses. Sendo necessario refaze-las com esta frequencia.
[quote=edilmar]Sim, eu faco assinatura de todos os JARs.
O problema é que a assinatura padrao gerada pelo JDK dura 6 meses. Sendo necessario refaze-las com esta frequencia.[/quote]
Você está usando certificados auto-assinados? Se sim, é só mudar o parametro “validity” do comando keytool quando for gerar as chaves.
Eu uso auto-assinados mesmo, com o jarsigner.
E nao achei a opcao validity. Uso assim:
jarsigner -keystore isKeystore -storepass intersite fastatend\fastatend.jar is
[quote=edilmar]Eu uso auto-assinados mesmo, com o jarsigner.
E nao achei a opcao validity. Uso assim:
jarsigner -keystore isKeystore -storepass intersite fastatend\fastatend.jar is
[/quote]
validity é uma opção do comando keytool. O comando keytool é para gerar a keystore (que contém as chaves privadas e publica com certificado auto-assinado) que você usa no comando jarsigner. Como você estava gerando a keystore?