I'm having connection problems when using the webservice with activejdbc + tomcat7.
The webservice works sometimes (for a period of time varied), but he suddenly loses connection and I am not knowing how to reconnect.
Note: I always call the method "CreateConnection ()" in the first line of each method.
Example error message:
Caused by: org.javalite.activejdbc.DBException: org.javalite.activejdbc.DBException: there is no connection 'sqldados' on this thread, are you sure you opened it?, Query: SELECT * FROM users WHERE chave=? LIMIT 1, params: webservice.lojaIntegracao
at org.javalite.activejdbc.DB.connection(DB.java:604)
at org.javalite.activejdbc.DB.find(DB.java:402)
at org.javalite.activejdbc.LazyList.hydrate(LazyList.java:305)
at org.javalite.activejdbc.LazyList.size(LazyList.java:531)
at org.javalite.activejdbc.Model.findFirst(Model.java:1749)
at br.com.eacsoftware.pagatto.webservice.integracao.models.Users.findFirst(Users.java)
Model
=====================================
@IdName("no")
@Table("users")
@DbName("sqldados")
public class Users extends Model implements ModelBasic {
public static Users findPk(Object custno) {
return Users.findFirst("no=?", custno);
}
@Override
public boolean isModify() {
return ModelUtils.isModify(this, "fieldhash");
}
@Override
public Usuario createDTO() {
Usuario dto = new Usuario();
dto.setCodigo(getString("no"));
dto.setLogin(getString("login"));
dto.setNome(getString("name"));
dto.setSenha(getString("pswd"));
dto.setSenhaLiberacao(getString("pswd"));// TODO: avaliar o uso da mesma senha (GB)
return dto;
}
}
Interface WebService
=====================================
@WebService
@SOAPBinding(style = Style.RPC, use = Use.LITERAL)
public interface UsuarioWS {
String teste();
List<Usuario> listUsersAll();
List<Usuario> listUsersModify();
}
Implementation WebService
=====================================
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
@WebService(endpointInterface = "br.com.eacsoftware.pagatto.webservice.integracao.UsuarioWS", serviceName = "UsuarioService")
public class UsuarioImpl extends ServiceUtils implements UsuarioWS {
private List<Users> getUsers() {
return Users.findAll();
}
@Override
public List<Usuario> listUsersAll() {
createConnection(); //in all methods, always trying to create the connection.
List<Usuario> result = new ArrayList<>();
for (Users userDB : getUsers()) {
result.add(userDB.createDTO());
}
return result;
}
@Override
public List<Usuario> listUsersModify() {
createConnection(); //in all methods, always trying to create the connection.
List<Usuario> result = new ArrayList<>();
for (Users userDB : getUsers()) {
if (userDB.isModify()) {
result.add(userDB.createDTO());
}
}
return result;
}
}
Methods Commons
=====================================
public class ServiceUtils {
private static DB sqldados = null;
private static DB pagatto = null;
private static DB sqlpdv = null;
private static String url_pagatto = "jdbc:mysql://localhost/pagatto";
private static String url_dados = "jdbc:mysql://localhost/sqldados";
private static String url_pdv = "jdbc:mysql://localhost/sqlpdv";
private static String user = "root";
private static String password = "";
protected synchronized static void createConnection() {
if (sqlpdv == null) {
sqlpdv = new DB("sqlpdv");
sqlpdv.open("com.mysql.jdbc.Driver", url_pdv, user, password);
}
if (sqldados == null) {
sqldados = new DB("sqldados");
sqldados.open("com.mysql.jdbc.Driver", url_dados, user, password);
}
if (pagatto == null) {
pagatto = new DB("pagatto");
pagatto.open("com.mysql.jdbc.Driver", url_pagatto, user, password);
}
}
}
Atenciosamente,
--
Gladyston Pereira Batista
Sócio-Diretor / Stone Tecnologia
Belo Horizonte-MG / (31)8638-8101