[DÚVIDA] Startar HSQLDB em classe JAVA

Olá todos, pesquisei na documentação do HSQLDB como dar um start no Banco em uma classe java. Mas não achei nada parecido, vi alguns post na internet, mas nenhum fala o que eu preciso.

Muitas pessoas fizeram tutoriais de como fazer a conexão, mas essa parte está pronta já. Só nao quero abrir um terminar e fazer o start via comando pra minha conexão funcionar. Quero que faça esse start “sozinho”.

Você pode criar um serviço no SO e configura-lo para ser iniciado quando do carregamento do sistema.

Para fazer isso, temos, por exemplo:

  1. srvany.exe --> (http://www.vogella.de/articles/ApacheDerby/article.html#service)
  2. Java Service Launcher (JSL) --> (http://sourceforge.net/projects/jslwin)
  3. Java Service Wrapper by Tanuki Software --> (http://wrapper.tanukisoftware.org/doc/english/index.html)

Até breve.

Vixi, vou distribuir minha aplicação pra várias pessoas, não queria mexer no SO delas. Mas vou dar uma olhada nesses links

Tnks

Entendo.

Então olhe o fonte aqui: http://www.guj.com.br/java/133798-iniciar-hsqldb-server-no-codigo-e-criar-novo-usuario-ao-iniciar-a-session-do-hibernate

Dica: abra o hsqldb.jar com o Netbeans, por exemplo, e localize o método main a que se refere o runServer.bat.

Pelo script de batch analisei que temos o seguinte:

java -cp …/lib/hsqldb.jar org.hsqldb.Server -database.0 file:mydb -dbname.0 xdb

Ou seja, este comando mostra que org.hsqldb.Server tem um método [color=blue]public void static main(String[] args)[/color]. Cada argument fornecido é membro de um array. Daí esbocei o seguinte:

public void startHsqlDb(){ try{ org.hsqldb.Server.main(new String[]{"-database.0", "file:mydb", ...}); } catch(ExceptionNecessariaCapturada netbc){ // vc sabe o q fazer aqui } }

Mas não sei se essa é a melhor forma de inicializar o servidor.

Estude http://www.hsqldb.org/doc/src/org/hsqldb/Server.html

E viva o Open Source !

Consegui fazer ele startar por uma classe:

[code]public static void startDB(){

	try{
		 
		org.hsqldb.Server.main(new String[]{"-database.0", "file:cartao", "-dbname.0", "cartao"});
	}
	catch(Exception e){
		   
		JOptionPane.showMessageDialog(null,"Erro ao abrir DB = "+e);
	}
}	[/code]

Agora não acho minhas tabelas …

org.hibernate.exception.SQLGrammarException: could not execute query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.loader.Loader.doList(Loader.java:2536) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276) at org.hibernate.loader.Loader.list(Loader.java:2271) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:890) at br.com.fastway.cobranca.hibernatedao.UsuarioDAO.getByLogin(UsuarioDAO.java:57) at org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:85) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:534) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1352) at br.com.fastway.common.HibernateTransaction.doFilter(HibernateTransaction.java:39) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1323) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:474) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:517) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:934) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:404) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:184) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:869) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:346) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:581) at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1057) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:807) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:220) at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:411) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:526) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:41) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:528) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLException: user lacks privilege or object not found: USUARIO at org.hsqldb.jdbc.Util.sqlException(Util.java:215) at org.hsqldb.jdbc.JDBCPreparedStatement.<init>(JDBCPreparedStatement.java:3957) at org.hsqldb.jdbc.JDBCConnection.prepareStatement(JDBCConnection.java:637) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:452) at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1700) at org.hibernate.loader.Loader.doQuery(Loader.java:801) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) at org.hibernate.loader.Loader.doList(Loader.java:2533)

Li ambos sites, e mesmo assim … nada

Você tem que informar a onde está localizado a pasta do seu BD.