Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-users] Getting JNDI/ db connection pool to work

I found a slightly old mysql connector jar, and now it looks like the connection is being created ok, and the insert even worked!
On to clean up my startup script.

Thanks guys!
Bill

On 7/14/2015 5:08 PM, Bill Ross wrote:
On 7/14/2015 3:48 PM, Jan Bartel wrote:
This is the link to the page with the current docs:
https://www.eclipse.org/jetty/documentation/


I don't see a link to a "jetty dependencies" page. Likely you are
following out-of-date doco - alternatively post a link to the page
linked from the one of the doc bundles above and I'll amend/remove it
as necessary.

This page seems to be there:

https://eclipse.org/jetty/documentation/current/jndi-embedded.html

-- errata:

"You can obtain this jar from the Jetty dependencies site.
404
http://download.eclipse.org/jetty/orbit/javax.mail.glassfish_1.4.1.v201005082020.jar/dist/
Ok, those links on that page look wrong, they shouldn't have the dist/
suffix. I've opened a bug for that:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=472671


One thing I noticed that wasn't in the docs is that I had --module=jndi
commented out in start.ini.
You should have jndi, plus and maybe ext (eg if you've copied your
driver jars into ext/)  modules enabled.

Adding plus and ext to start.ini caused logging on load of the jetty-env.xml, yay! So I know that's being loaded now:

java.lang.IllegalStateException: No Method: <Call class="org.eclipse.jetty.util.log.Log" name="info"><Arg>Starting my super test application%%%%%%%%%%%%%%%%%%%%</Arg></Call> on class org.eclipse.jetty.util.log.Log


However, you've posted links to the jetty embedded page, but yet you
mention using a jetty distribution. If you're making a standard webapp
and deploying it to a jetty distro, you should enable the modules I
just mentioned.

That would be worth mentioning in the docs ("add these lines to start.ini"). I was reaching for straw in looking at the embedded doc.

The latest problem is that it can't find the mysql driver. I can't find a jar to put in jetty-base/lib/ext/, just mysql-connector-java is in my gradle config at build time, but no obvious jar to grab in my .m2 cache.

Thanks,
Bill

If you've created a main class then you need to make
sure that jetty-plus, jetty-env jars are on the command line, and you
need to make sure that the extra configuration classes of
JettyEnvXmlConfiguration and PlusConfiguration are enabled for the
WebAppContext - see line 20 of the example code pasted on the
jndi-embedded.html page you linked to.

Jan


Now I get:

On the lookup line in my servlet:

     DataSource ds = (DataSource)ic.lookup("java:comp/env/jdbc/pr");

Getting hard-to-interpret NameNotFoundException:

00:19:24.129 [qtp1915503092-15] ERROR com.priot.servlet.GetSession - Naming
javax.naming.NameNotFoundException
         at
org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:533)
~[jetty-jndi-9.3.1-SNAPSHOT.jar:9.3.1-SNAPSHOT]

This tells me that I am getting jetty-jndi from local source, so adding my
own info in a warn and reinstalling:

2015-07-14 00:19:24.129:WARN:jndi:qtp1915503092-15: Binding null for
firstComponent: [env]

But 'env' is boilerplate from the examples:

DataSource myDS = (DataSource)ic.lookup("java:comp/env/jdbc/myds");

Does that reveal something useful?

Thanks,
Bill


jetty-plus is most definitely still in use. You'll need it. I suggest
you look at either the embedded examples in the jetty repo or the
test-jndi webapp in the jetty distro to see what you need to do.

cheers
Jan

On 12 July 2015 at 02:45, Bill Ross <ross@xxxxxxxxxxxx> wrote:
By the way, I notice the 'Jetty dependencies site' is broken, and the
jndi
intro page that mentions it looks out of date.
Why isn't the source for jetty-jndi.jar in the distribution? It would be easier to debug. I found the jar on maven and got it via my build.gradle:

compile group: 'org.eclipse.jetty', name: 'jetty-jndi', version:
'9.3.0.v20150612'

But now it gives me this on lookup:

09:25:46.627 [qtp1963387170-11] ERROR com.priot.servlet.GetSession -
Naming
javax.naming.NameNotFoundException
          at
org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:532)
~[jetty-jndi-9.3.0.v20150612.jar:9.3.0.v20150612]
          at
org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:563)
~[jetty-jndi-9.3.0.v20150612.jar:9.3.0.v20150612]
          at
org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:578)
~[jetty-jndi-9.3.0.v20150612.jar:9.3.0.v20150612]
          at

org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:106)
~[jetty-jndi-9.3.0.v20150612.jar:9.3.0.v20150612]
at javax.naming.InitialContext.lookup(InitialContext.java:417)
~[?:1.8.0_45]
          at com.priot.servlet.GetSession.doPost(GetSession.java:53)
[classes/:?]

I wonder if this I got from the doc is right, since it defines the name -
what about the empty first arg?
Hm - it uses jetty.plus but jetty-plus.jar seems to be a thing of the
past
(see note on out of date page above - jetty-plus.jar seems to have ended
w/
v7 in maven central). Another odd thing is that the name is in the Arg,
not
in the id, which is normally what I'd expect to use to look up an object:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<New id="prDataSource" class="org.eclipse.jetty.plus.jndi.Resource">
     <Arg></Arg>
     <Arg>jdbc/pr</Arg>
     <Arg>
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <Set name="driverClass">com.mysql.jdbc.Driver</Set>
         <Set name="jdbcUrl">jdbc:mysql://localhost:3306/pr</Set>
         <Set name="user">user</Set>
         <Set name="password">pwd</Set>
      </New>
     </Arg>
    </New>
</Configure>

Thanks,
Bill



On 7/10/2015 11:05 PM, Jan Bartel wrote:

Looks to me that you don't have jetty-jndi.jar on the classpath - it
contains the jndi impl.

Jan

On 11 July 2015 at 14:52, Bill Ross <ross@xxxxxxxxxxxx> wrote:

I have:

----- src/main/webapp/WEB-INF/web.xml

...
<resource-ref>
    <description>DataSource</description>
    <res-ref-name>jdbc/pr</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
...

----- src/main/webapp/WEB-INF/jetty-env.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN"
"http://www.eclipse.org/jetty/configure.dtd";>

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<New id="prDataSource" class="org.eclipse.jetty.plus.jndi.Resource">
     <Arg></Arg>
     <Arg>jdbc/pr</Arg>
     <Arg>
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource">
         <Set name="driverClass">com.mysql.jdbc.Driver</Set>
         <Set name="jdbcUrl">jdbc:mysql://localhost:3306/pr</Set>
         <Set name="user">user</Set>
         <Set name="password">pwd</Set>
      </New>
     </Arg>
    </New>
</Configure>

------ src/main/java/com/priot/servlet/GetSession.java

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

              InitialContext ic = new InitialContext();
              DataSource ds =
(DataSource)ic.lookup("java:comp/env/jdbc/pr");

--- Thrown on ic.lookup():

01:19:19.592 [qtp1963387170-40] ERROR com.priot.servlet.GetSession -
Naming
javax.naming.NoInitialContextException: Need to specify class name in
environment or system property, or as an applet parameter, or in an
application resource file:  java.naming.factory.initial
          at
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
~[?:1.8.0_45]
          at
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
~[?:1.8.0_45]
          at

javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:350)
~[?:1.8.0_45]
at javax.naming.InitialContext.lookup(InitialContext.java:417)
~[?:1.8.0_45]
          at com.priot.servlet.GetSession.doPost(GetSession.java:53)
[classes/:?]

It's as if my jetty-env.xml isn't being seen? But it is there in the war
file (along with the .swp).

Am I missing something obvious?

Thanks,
Bill
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe
from
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users




_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe
from
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users


_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users



_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-users



Back to the top