所有内容都在 Windows XP Pro SP2/32 位下运行。
我已经从 http://dist.codehaus.org/jetty/jetty-7.0.0-prereleases/jetty-7.0.0pre3/jetty- assembly-7.0.0pre3.zip>dist.codehaus 下载了 Jetty 7 pre3。组织。
我已将 jetty 提取到 C:\jetty-7.0.0pre3\
(所以我有 C:\jetty-7.0.0pre3\bin\和其他目录)
我已将我的 web 应用程序放入 C:\jetty-7.0.0pre3\webapps\
我的 web.xml 中有资源引用:
<resource-ref>
<description>dev datasource</description>
<res-ref-name>jdbc/dev</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
并在jetty.xml中进行配置:
<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/dev</Arg>
<Arg>
<New class="oracle.jdbc.pool.OracleConnectionPoolDataSource">
<Set name="User">username</Set>
<Set name="URL">jdbc:oracle:thin:@10.201.201.64:1521:DEV</Set>
<Set name="Password">password</Set>
</New>
</Arg>
</New>
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
<Set name="ConfigurationClasses"><Ref id="plusConfig"/></Set>
</New>
</Arg>
</Call>
我正在从 C:\jetty-7.0.0pre3\
运行 java -DOPTION=plus -jar start.jar
,但出现以下错误:
2008-10-14 12:12:49.163::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
2008-10-14 12:12:49.413::WARN: Config error at <New id="dev" class="org.mortbay.jetty.plus.naming.Resource"><Arg>jdbc/dev</Arg><Arg>
<New class="oracle.jdbc.pool.OracleConnectionPoolDataSource"><Set name="User">username</Set><Set name="URL">jdbc:oracle:thin:@10.201.201.64:1521:DEV</Set><Set name="Password">password</Set></New>
</Arg></New>
2008-10-14 12:12:49.413::WARN: EXCEPTION
java.lang.ClassNotFoundException: org.mortbay.jetty.plus.naming.Resource
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.mortbay.util.Loader.loadClass(Loader.java:91)
at org.mortbay.xml.XmlConfiguration.nodeClass(XmlConfiguration.java:224)
at org.mortbay.xml.XmlConfiguration.newObj(XmlConfiguration.java:572)
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:971)
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.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)
C:\jetty-7.0.0pre3\lib\plus\jetty-plus-7.0.0pre3.jar
位于类路径上。在同一个控制台中:
C:\jetty-7.0.0pre3>set classpath
CLASSPATH=C:\Program Files\IBM\WebSphere MQ\Java\lib\providerutil.jar;C:\Program
Files\IBM\WebSphere MQ\Java\lib\com.ibm.mqjms.jar;C:\Program Files\IBM\WebSpher
e MQ\Java\lib\ldap.jar;C:\Program Files\IBM\WebSphere MQ\Java\lib\jta.jar;C:\Pro
gram Files\IBM\WebSphere MQ\Java\lib\jndi.jar;C:\Program Files\IBM\WebSphere MQ\
Java\lib\jms.jar;C:\Program Files\IBM\WebSphere MQ\Java\lib\connector.jar;C:\Pro
gram Files\IBM\WebSphere MQ\Java\lib\fscontext.jar;C:\Program Files\IBM\WebSpher
e MQ\Java\lib\com.ibm.mq.jar;.;c:\Program Files\Java\jdk1.5.0_05\classes;C:\Prog
ram Files\Java\jre1.5.0_05\lib\ext\QTJava.zip;C:\Program Files\Java\jre1.5.0_05\
lib\spring.jar;c:\jetty-7.0.0pre3\lib\plus\jetty-plus-7.0.0pre3.jar
怎么了?我应该如何将 org.mortbay.jetty.plus.naming.Resource 添加到 start.jar 的可见区域?
最佳答案
问题是 addLifeCycle 不接受 Resource
对象;它需要 LifeCycle
实现,例如 WebAppContext
或 WebAppDeployer
。
假设您在 jetty.xml 中设置了 WebAppDeployer(或等效项),请尝试以下操作:
<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>
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
....
<Set name="ConfigurationClasses"><Ref id="plusConfig"/></Set>
....
</New>
</Arg>
</Call>
<New id="dev" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>jdbc/dev</Arg>
<Arg>
<New class="oracle.jdbc.pool.OracleConnectionPoolDataSource">
<Set name="User">username</Set>
<Set name="URL">jdbc:oracle:thin:@10.201.201.64:1521:DEV</Set>
<Set name="Password">password</Set>
</New>
</Arg>
</New>
如果您只需要特定 Web 应用程序的数据源,请在该 Web 应用程序的 jetty-env.xml 文件中执行类似的配置。
此外,由于您使用的是 Jetty 7,因此您需要加载(可选)plus
库(如果 exe 尚未为您执行此操作)。您会知道它们没有被加载,因为您将在启动时收到 ClassNotFoundException。
在 Linux 上启动 Jetty,我会这样做:
java -DOPTIONS=plus -jar start.jar
但是,我对 Windows 不熟悉。可能
Jetty-Service.exe -DOPTIONS=plus
可以吗?如果没有,那么当您运行 jetty 时,寻找可以将系统属性“OPTIONS”设置为“plus”的东西。
关于java - 我应该如何配置 Jetty 7 pre3 以使用 oracle JDBC 源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190644/