Jetty e JNDI

1 resposta
G

Estou tentando subir um data source no jetty via JNDI, porém sempre que tento acessar recebo um javax.naming.NameNotFoundException.

jetty.xml
<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="Server" class="org.mortbay.jetty.Server">
	<Call name="addConnector">
		<Arg>
			<New class="org.mortbay.jetty.nio.SelectChannelConnector">
				<Set name="port">
					<SystemProperty name="jetty.port" default="9090" />
				</Set>
			</New>
		</Arg>
	</Call>

	<Set name="ThreadPool">
		<New class="org.mortbay.thread.BoundedThreadPool">
			<Set name="minThreads">10</Set>
			<Set name="maxThreads">100</Set>
		</New>
	</Set>

	<New id="LibraryDS" class="org.mortbay.jetty.plus.naming.Resource">
		<Arg></Arg>
		<Arg>jdbc/DS</Arg>
		<Arg>
			<New class="org.apache.commons.dbcp.BasicDataSource">
				<Set name="url">jdbc:db2://localhost:50000/****</Set>
				<Set name="driverClassName">com.ibm.db2.jcc.DB2Driver</Set>
				<Set name="username">***</Set>
				<Set name="password">***</Set>
			</New>
		</Arg>
	</New>
</Configure>
Classe de teste:
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;


public class JndiTest {
	public static void main(String[] args) throws Exception {
		
		Properties props = new Properties();
		props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.mortbay.naming.InitialContextFactory");
		props.setProperty(Context.URL_PKG_PREFIXES, "org.mortbay.naming");
		props.setProperty(Context.PROVIDER_URL, "http://127.0.0.1:9090/");
		Context initContext = new InitialContext(props);
		DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/DS");
		System.out.println("DS: "+(ds!=null));
	}
}

1 Resposta

G

Depois de ter desistido, voltei a fazer alguns testes e achei a resposta! O jeito de fazer o lookup estava passando o prefixo “java:” e isso fazia o jetty se perder!

DataSource ds = (DataSource)initContext.lookup("comp/env/jdbc/DS");

Se alguém mais tiver a dúvida, tá ae a resposta!

Criado 19 de maio de 2009
Ultima resposta 8 de fev. de 2010
Respostas 1
Participantes 1