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?
E
edilmar
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…
E
edilmar
IMPORTANTE: Eu consigo rodar a aplicacao pelo console, localmente, ela nao funciona apenas por dentro do Java Web Start…
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)
E
edilmar
Sera que o JAR do Firebird/Jaybird faz alguma coisa dentro do seu codigo que nao permite o funcionamento pelo Java Web Start?
E
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…
rmlang
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…
Funciona sim, é só declarar os JARS no JNLP que ele baixa e utiliza normalmente. Ex:
Sim, mas além de declarar os JARs será necessário fazer a assinatura dos mesmos.
rmlang
leonardom:
Sim, mas além de declarar os JARs será necessário fazer a assinatura dos mesmos.
Eu não fiz assinatura e funcionou.
Como não precisei fazer nada a mais, nem fui atrás de como se faz isso.
A assinatura não é necessária somente para acessar recursos da máquina que está rodando o aplicativo?
E
edilmar
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.
FkJ
Conseguiu resolver? Estava com o mesmo problema e consegui resolver fazendo a assinatura do jar
E
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.
O
oyama
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.
Você está usando certificados auto-assinados? Se sim, é só mudar o parametro “validity” do comando keytool quando for gerar as chaves.
PS: Este topico era de 2004 mesmo?
E
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
O
oyama
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
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?