如何为Jetty 7.0pre5配置JNDI
我在启动使用Mysql连接池的Jetty时遇到这个错误。有人能帮帮我吗如何为Jetty 7.0pre5配置JNDI,jetty,jndi,Jetty,Jndi,我在启动使用Mysql连接池的Jetty时遇到这个错误。有人能帮帮我吗 [root@localhost test]# java -DOPTIONS=plus,ext.default -classpath %CLASSPATH% -jar /usr/src/jetty7/start.jar myjetty.xml 2008-12-20 18:24:08.138::INFO: Logging to STDERR via org.mortbay.log.StdErrLog 2008-12-20 18
[root@localhost test]# java -DOPTIONS=plus,ext.default -classpath %CLASSPATH% -jar /usr/src/jetty7/start.jar myjetty.xml
2008-12-20 18:24:08.138::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
2008-12-20 18:24:08.307::WARN: Config error at <New id="dev" class="org.mortbay.jetty.plus.naming.Resource"><Arg>jdbc/mysql</Arg><Arg>
<New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"><Set name="User">root</Set><Set name="URL">jdbc:mysql://192.168.1.105/app</Set><Set name="Password">sqlpass</Set></New>
</Arg></New>
2008-12-20 18:24:08.307::WARN: EXCEPTION
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.mortbay.xml.XmlConfiguration.newObj(XmlConfiguration.java:608)
at org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:256)
at org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:214)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:974)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mortbay.start.Main.invokeMain(Main.java:218)
at org.mortbay.start.Main.start(Main.java:564)
at org.mortbay.start.Main.main(Main.java:136)
Caused by: 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:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.getNameParser(InitialContext.java:480)
at org.mortbay.jetty.plus.naming.NamingEntry.save(NamingEntry.java:182)
at org.mortbay.jetty.plus.naming.NamingEntry.<init>(NamingEntry.java:58)
at org.mortbay.jetty.plus.naming.NamingEntry.<init>(NamingEntry.java:76)
at org.mortbay.jetty.plus.naming.Resource.<init>(Resource.java:44)
... 15 more
2008-12-20 18:24:08.308::WARN: Nested in java.lang.reflect.InvocationTargetException:
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:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.getNameParser(InitialContext.java:480)
at org.mortbay.jetty.plus.naming.NamingEntry.save(NamingEntry.java:182)
at org.mortbay.jetty.plus.naming.NamingEntry.<init>(NamingEntry.java:58)
at org.mortbay.jetty.plus.naming.NamingEntry.<init>(NamingEntry.java:76)
at org.mortbay.jetty.plus.naming.Resource.<init>(Resource.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.mortbay.xml.XmlConfiguration.newObj(XmlConfiguration.java:608)
at org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:256)
at org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:214)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:974)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.mortbay.start.Main.invokeMain(Main.java:218)
at org.mortbay.start.Main.start(Main.java:564)
at org.mortbay.start.Main.main(Main.java:136)
[root@localhost test]#
[root@localhosttest]#java-DOPTIONS=plus,ext.default-classpath%classpath%-jar/usr/src/jetty7/start.jar myjetty.xml
2008-12-20 18:24:08.138::信息:通过org.mortbay.log.StdErrLog登录到STDERR
2008-12-20 18:24:08.307::WARN:jdbc/mysql的配置错误
rootjdbc:mysql://192.168.1.105/appsqlpass
2008-12-20 18:24:08.307::警告:异常
java.lang.reflect.InvocationTargetException
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于org.mortbay.xml.XmlConfiguration.newObj(XmlConfiguration.java:608)
位于org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:256)
位于org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:214)
位于org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:974)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.mortbay.start.Main.invokeMain(Main.java:218)
位于org.mortbay.start.Main.start(Main.java:564)
位于org.mortbay.start.Main.Main(Main.java:136)
原因:javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件中指定类名:java.naming.factory.initial
位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
位于javax.naming.InitialContext.GetUrlOrDefaultiniticTx(InitialContext.java:325)
位于javax.naming.InitialContext.getNameParser(InitialContext.java:480)
位于org.mortbay.jetty.plus.naming.NamingEntry.save(NamingEntry.java:182)
位于org.mortbay.jetty.plus.naming.NamingEntry.(NamingEntry.java:58)
位于org.mortbay.jetty.plus.naming.NamingEntry.(NamingEntry.java:76)
位于org.mortbay.jetty.plus.naming.Resource。(Resource.java:44)
... 还有15个
2008-12-20 18:24:08.308::警告:嵌套在java.lang.reflect.InvocationTargetException中:
javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件中指定类名:java.naming.factory.initial
位于javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
位于javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
位于javax.naming.InitialContext.GetUrlOrDefaultiniticTx(InitialContext.java:325)
位于javax.naming.InitialContext.getNameParser(InitialContext.java:480)
位于org.mortbay.jetty.plus.naming.NamingEntry.save(NamingEntry.java:182)
位于org.mortbay.jetty.plus.naming.NamingEntry.(NamingEntry.java:58)
位于org.mortbay.jetty.plus.naming.NamingEntry.(NamingEntry.java:76)
位于org.mortbay.jetty.plus.naming.Resource。(Resource.java:44)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于org.mortbay.xml.XmlConfiguration.newObj(XmlConfiguration.java:608)
位于org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:256)
位于org.mortbay.xml.XmlConfiguration.configure(XmlConfiguration.java:214)
位于org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:974)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于org.mortbay.start.Main.invokeMain(Main.java:218)
位于org.mortbay.start.Main.start(Main.java:564)
位于org.mortbay.start.Main.Main(Main.java:136)
[root@localhost测试]#
这是我的Jetty.xml
<?xml version="1.0"?>
<!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">
<!-- the ip address or domain to bind -->
<Set name="host"><SystemProperty name="jetty.host" /></Set>
<!-- the port to use/bind, defaults to 8080 if property not set -->
<Set name="port"><SystemProperty name="jetty.port" default="8090"/></Set>
<!-- the time in milliseconds when a connection is considered idle -->
<Set name="maxIdleTime">300000</Set>
<!-- the number of acceptors (their job is to accept the connection and dispatch to thread pool) -->
<Set name="Acceptors">2</Set>
<!-- should the connection statistics be turned on? (Not advisable in production) -->
<Set name="statsOn">false</Set>
<!-- the confidential port -->
<Set name="confidentialPort">8443</Set>
<!-- indicates the minimum number of connections when the server is considered low on resources -->
<Set name="lowResourcesConnections">20000</Set>
<!-- when low on resources, this indicates the maximum time (milliseconds) a connection must be idle to not be closed -->
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<Set name="handler">
<New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.mortbay.jetty.Handler">
<Item>
<New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/>
</Item>
<Item>
<New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/>
</Item>
<Item>
<New id="RequestLog" class="org.mortbay.jetty.handler.RequestLogHandler"/>
</Item>
</Array>
</Set>
</New>
</Set>
<Array id="plusConfig" type="java.lang.String">
<Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
<Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
<Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
<Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
<Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
</Array>
<New id="dev" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>jdbc/mysql</Arg>
<Arg>
<New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
<Set name="User">root</Set>
<Set name="URL">jdbc:mysql://192.168.1.105/app</Set>
<Set name="Password">sqlpass</Set>
</New>
</Arg>
</New>
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="ConfigurationClasses"><Ref id="plusConfig"/></Set>
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="configurationDir"><SystemProperty name="jetty.home" default="/root/test"/>/contexts</Set>
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
<Ref id="RequestLog">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.mortbay.jetty.NCSARequestLog">
<Set name="filename"><SystemProperty name="jetty.logs" default="./logs"/>/yyyy_mm_dd.request.log</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="retainDays">90</Set>
<Set name="append">true</Set>
<Set name="extended">true</Set>
<Set name="logCookies">false</Set>
<Set name="LogTimeZone">GMT</Set>
</New>
</Set>
</Ref>
</Configure>
300000
2.
假的
8443
20000
5000
org.mortbay.jetty.webapp.WebInfConfiguration
org.mortbay.jetty.plus.webapp.EnvConfiguration
org.mortbay.jetty.plus.webapp.Configuration
org.mortbay.jetty.webapp.JettyWebXmlConfiguration
org.mortbay.jetty.webapp.TagLibConfiguration
jdbc/mysql
根
jdbc:mysql://192.168.1.105/app
sqlpass
/上下文
5.
/yyyy_mm_dd.request.log
年月日
90
真的
真的
假的
格林尼治标准时间
jetty-plus.jar文件位于类路径上,并且命令行中包含配置文件etc/jetty plus.xml
:
java -DOPTIONS=plus,ext.default -classpath %CLASSPATH% -jar /usr/src/jetty7/start.jar /path/to/etc/jetty-plus.xml myjetty.xml
应在start.ini中设置选项:
OPTIONS=Server,jsp,jmx,resources,websocket,ext,plus
然后InitialContext可用