Erro no pool de conexões usando uma classe listener

1 resposta
dcorteztec

Estou fazendo um trabalho para faculdade em struts 2 só um crud, eu consigo fazer em sruts 1 usando uma classe de conexão, mas
usando poll de conexôes ta dando esse erro, por favor me ajudem.

SEVERE: Exception sending context initialized event to listener instance of class app11a.listener.Applistener
java.lang.NullPointerException
at javax.naming.InitialContext.getURLScheme(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at app11a.listener.Applistener.contextInitialized(Applistener.java:19)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

minha classe app11a.listener.Applistener
package app11a.listener;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.sql.DataSource;

public class Applistener implements ServletContextListener {
	public void contextInitialized(ServletContextEvent sce) {
		ServletContext servletContext = sce.getServletContext();
		String dataSoucerJndiName = servletContext
				.getInitParameter("dataSoucerJndiName");
		try {
			Context context = new InitialContext();
			DataSource dataSource = (DataSource) context
					.lookup(dataSoucerJndiName);
			servletContext.setAttribute("dataSource", dataSource);
		} catch (NamingException e) {
			throw new RuntimeException();
		}
	}

	public void contextDestroyed(ServletContextEvent cse) {

	}

}
minha class dao
package app11a.DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


public class EmpregadoDAOSQLImpl extends DAOBase implements EmpregadoDAO {
	private static final String CREATE_EMPREGADO_SQL = "INSERT INTO empregados (nome, sobrenome) VALUES(?,?)";

	public void createEmpregado(Empregado empregado) throws DAOException {
		Connection connection = null;
		PreparedStatement pStatement = null;
		try {
			connection = getConnection();
			pStatement = connection.prepareStatement(CREATE_EMPREGADO_SQL);
			pStatement.setString(1, empregado.getNome());
			pStatement.setString(2, empregado.getSobrenome());
			pStatement.executeUpdate();
			pStatement.close();
		} catch (SQLException ex) {
			throw new DAOException();

		} finally {
			try {
				connection.close();
			} catch (SQLException ex) {
				throw new DAOException();
			}
		}
	}

	private static final String UPDATE_EMPREGADO_SQL = "UPDATE empregados set nome=?, sobrenome=? WHERE id=?";

	public void updateEmpregado(Empregado empregado) throws DAOException {

		Connection connection = null;
		PreparedStatement pStatement = null;

		try {
			connection = getConnection();
			pStatement = connection.prepareStatement(UPDATE_EMPREGADO_SQL);
			pStatement.setString(1, empregado.getNome());
			pStatement.setString(2, empregado.getSobrenome());
			pStatement.executeUpdate();
			pStatement.close();
		} catch (SQLException ex) {
			throw new DAOException();
		} finally {
			try {
				connection.close();
			} catch (SQLException ex) {

			}

		}
	}

	private static final String GET_EMPREGADO_SQL = "SELECT nome, sobrenome FROM empregados WHERE id=?";

	public Empregado getEmpregado(int empregadoId) throws DAOException {
		Connection connection = null;
		PreparedStatement pStatement = null;
		ResultSet rs = null;
		Empregado empregado = new Empregado();
		try {
			connection = getConnection();
			pStatement = connection.prepareStatement(GET_EMPREGADO_SQL);
			pStatement.setInt(1, empregadoId);
			rs = pStatement.executeQuery();
			if (rs.next()) {
				empregado.setNome(rs.getString("nome"));
				empregado.setSobrenome(rs.getString("sobrenome"));
				empregado.setId(empregadoId);
			}
			rs.close();
			pStatement.close();
		} catch (SQLException ex) {
			throw new DAOException();
		} finally {
			try {
				connection.close();
			} catch (SQLException ex) {

			}
		}

		return empregado;
	}

	private static final String DELETE_EMPREGADO_SQL = "DELETE FROM empregados WHERE id=?";

	public void deleteEmpregado(int empregadoId) throws DAOException {

		Connection connection = null;
		PreparedStatement pStatement = null;
		try {
			connection = getConnection();
			pStatement = connection.prepareStatement(DELETE_EMPREGADO_SQL);
			pStatement.setInt(1, empregadoId);
			pStatement.executeUpdate();
			pStatement.close();
		} catch (SQLException ex) {
			throw new DAOException();
		} finally {
			try {
				connection.close();
			} catch (SQLException ex) {

			}
		}
	}

	private static final String SEARCH_EMPREGADO_SQL = "SELECT id, nome, sobrenome FROM empregados WHERE";

	public List<Empregado> searchEmpregado(
			EmpregadoSearchCriteria searchCriteria) throws DAOException {
		List<Empregado> empregados = new ArrayList<Empregado>();
		Connection connection = null;
		Statement statement = null;
		ResultSet resultSet = null;

		// Constrói os critérios de pesquisa
		StringBuilder criteriaSql = new StringBuilder(512);
		criteriaSql.append(SEARCH_EMPREGADO_SQL);
		if (searchCriteria.getNome() != null) {
			criteriaSql.append("nome LIKE '%"
					+ DBUtil.fixSqlFieldValue(searchCriteria.getNome())
					+ "%' AND ");
		}
		if (searchCriteria.getSobrenome() != null) {
			criteriaSql.append("lastName LIKE '%"
					+ DBUtil.fixSqlFieldValue(searchCriteria.getSobrenome())
					+ "%' AND ");
		}
		// Remove 'AND' & 'WHERE' não usados
		if (criteriaSql.substring(criteriaSql.length() - 5).equals("AND"))
			criteriaSql.delete(criteriaSql.length() - 5,
					criteriaSql.length() - 1);
		if (criteriaSql.substring(criteriaSql.length() - 7).equals("WHERE"))
			criteriaSql.delete(criteriaSql.length() - 7,
					criteriaSql.length() - 1);
		try {
			connection = getConnection();
			statement = connection.createStatement();
			resultSet = statement.executeQuery(criteriaSql.toString());
			while (resultSet.next()) {
				Empregado empregado = new Empregado();
				empregado.setId(resultSet.getInt("id"));
				empregado.setNome(resultSet.getString("nome"));
				empregado.setSobrenome(resultSet.getString("sobrenome"));
				empregados.add(empregado);

			}
			resultSet.close();
			statement.close();
		} catch (SQLException ex) {
			throw new DAOException();
		} finally {
			try {
				connection.close();
			} catch (SQLException ex) {

			}
		}
		return empregados;
	}
}
server.xml apache
<Context path="/struts2" docBase="struts2"
					reloadable="true" debug="8">
					<Resource name="jdbc/myDataSource" auth="Container"
						type="javax.sql.DataSource" />
					<ResourceParams name="jdbc/myDataSoucer">
						<parameter>
							<name>factory</name>
							<value>
								org.apache.commons.dbcp.BasicDataSoucerFactory
							</value>
						</parameter>
						<parameter>
							<name>maxActive</name>
							<value>100</value>
						</parameter>
						<parameter>
							<name>maxIdle</name>
							<value>30</value>
						</parameter>
						<parameter>
							<name>maxWait</name>
							<value>10000</value>
						</parameter>
						<parameter>
							<name>username</name>
							<value>root</value>
						</parameter>
						<parameter>
							<name>password</name>
							<value></value>
						</parameter>
						<parameter>
							<name>driverClassName</name>
							<value>com.mysql.jdbc.Driver</value>
						</parameter>
						<parameter>
							<name>url</name>
							<value>
								jdbc:mysql://localhost/empresa
							</value>
						</parameter>
					</ResourceParams>
				</Context>
			</Host>

1 Resposta

dcorteztec

esqueci de botar meu web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	 <context-param>
		<param-name>dataSourceJndiName</param-name>
		<param-value>java:/comp/env/jdbc/empresa</param-value>
	</context-param>
	<context-param>
		<param-name>dbType</param-name>
		<param-value>mysql</param-value>
	</context-param>

	<listener>
		<listener-class>app11a.listener.Applistener</listener-class>
	</listener>
	<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

	<!-- Restrict direct access to JSPs. 
		For the security constraint to work, the auth-constraint
		and login-config elements must be present -->
	<security-constraint>
		<web-resource-collection>
			<web-resource-name>JSPs</web-resource-name>
			<url-pattern>/jsp/*</url-pattern>
		</web-resource-collection>
		<auth-constraint />
	</security-constraint>

	<login-config>
		<auth-method>BASIC</auth-method>
	</login-config>
</web-app>
Criado 20 de novembro de 2009
Ultima resposta 23 de nov. de 2009
Respostas 1
Participantes 1