hj comecei a me aventurar com HSQLDB… em stand-alone e usando o DatabaseManager eu achei bem legal… o banco é rapidinho e tal…
mas a minha real intenção é por o banco dentro de uma aplicação web rodando como stand-alone… tipo o banco vai ta dentro do .WAR… localizado em /WEB-INF/db/
o jar do hsqldb ta em /WEB-INF/lib e devidamente no ClassPath…
só q nao consgui fazer a web-app acessar o banco… alguem pode me indicar um passo a passo de como fazer essa “instalação” ou entao me ajudar como fazer isso?
olhem o q eu ja tentei fazer (e q nao funcionou):
abri o DatabaseManager e criei um banco, e montei as tabelas.
importei os novos arquivos do banco (*.script, *.data, etc, etc) para dentro do projeto. na pasta /WEB-INF/db
importei o hsqldb.jar para a pasta /WEB-INF/lib e puis o jar no classpath
tentei fazer um pooling com o c3p0
e da o seguinte erro: java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
apesar de nao ter achado o driver do hsqldb, eu coloquei o hsqldb no classpath… eu nao queria colocar o driver na pasta common/lib do tomcat, pq se eu precisar trocar de servidor e só tiver acesso a pasta webapps aí nao funcionaria. (ja me ocorreu isso. de só ter acesso a pasta webapps)
pra testar, coloquei o hsqldb.jar na maldita pasta common/lib do tomcat…
aí ele encontrou o driver!
só q agora tenho outro problema… q parece ser mais serio…
é o seguinte…
agora ele nao encontrou o banco propriamente dito…
eu fiz assim:
com o DatabaseManager, eu criei um banco com as tabelas e tudo mais…
peguei os arquivos gerados (site.script, site.lck, site.properties e site.txt) e joguei dentro do meu projeto em WEB-INF/hsqldb/
aí na classe q conecta eu assim na variavel de URL do banco: jdbc:hsqldb:file:WEB-INF/hsqldb/site
e aí ele nao encontrou o banco… ou melhor, nao encontrou as tabelas do banco… mas se eu abro o banco com o DatabaseManager, as tabelas estao la!
me ajudem por favorrrrrrr!
o q eu faço pra aplicação encontrar o HSQLDB dentro da minha aplicação??? de preferencia de um jeito q eu nao precise colocar o driver dentro do Tomcat (common/lib)
obrigado!
D
DanielBadawiPJ
R
Rubem_AzenhaPJ
então daniel, o HSQLDB é meio furada para web no modo standalone pq ele cria e acessa a pasta com os dados, apontando o path relativo o local onde a main-class esta… e é paia para multiplos acessos… usa no modo webserver…
D
DanielBadawiPJ
aeeeeee!! finalmente alguem!
vale ae cara
entao… nao tinha pensado nesse ponto…
mas eu queria rodar em standalone, pra facilitar a instalação da aplicação em outros servers…
mas a minha pricipal duvida prevalece… tem como deixar o driver do banco só na aplicação? sem precisar copiar o jar do driver pra dentro da pasta common/lib do tomcat?
mas se alguem souber um jeito q fazer o hsqldb rodar em standalone dentro da propria aplicação web, me explica! hehehe
abraços a todos
M
matheusPJ
o JNuke usa esse HSQLDB, da um bizu com o frank, enche o saco dele um poco talvez ele saiba heahe
F
FranklinPJ
Daniel,
tem 4 formas de rodar o HSQLDB. Eu uso ele em memória para executar os test cases automaticamente. E uso o modo server para desenvolver.
Basicamente este modo consiste em só passar o caminho do BD na string de conexão. Tu não precisa rodar o server antes de tentar conectar. O driver JDBC do HSQLDB vai startar ele para ti.
O ruim é q tu não consegue acessar esta base de dados através de nenhuma outro programa, nem pelo Manager.
só q ainda me restou uma dúvida:
o DB ja precisa estar com as suas tabelas e tal…
se eu fizer assim:
Connection c = DriverManager.getConnection(“jdbc:hsqldb:file:site”, “daniel”, “***”);
ele fala q nao encontrou um user DANIEL… mas é pq o banco nao existe.
percebi se eu usar como username “sa” e password vazio, ele cria o banco na hora… só q vai ta vazio, sem as tabelas…
o q eu precisava fazer era criar criar o banco por fora da aplicao e por fora e depois importar pra dentro da app… isso é possivel?
abraços?
F
FranklinPJ
Acho que tu pode sobrescrever os arquivos do modo “In-process” com os arquivos gerados pelo modo Server.