2008-10-10 63 views
1

所有的東西都在Windows XP Pro SP2/32位下運行。我應該如何配置Jetty 7 pre3來使用oracle JDBC源代碼?

我已經從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 .ORG。
我已經提取的碼頭C:\jetty-7.0.0pre3\(所以我有C:\碼頭,7.0.0pre3 \ BIN \等迪爾斯)
我已經把我的webapp到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和我剛開g以下錯誤:

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的可視區域?

回答

2

問題是addLifeCycle不帶Resource對象;需要LifeCycle的實現,如WebAppContexts或WebAppDeployers。

假設你已經在你的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應用程序的數據源,然後做一個碼頭內的類似配置該webapp的-env.xml文件。另外,由於您使用的是Jetty 7,因此您需要加載(可選的)plus庫(如果exe文件已經不適合您)。你會知道他們沒有被加載,因爲在啓動時你會得到一個ClassNotFoundException。

在Linux上啓動了碼頭,我會做它像這樣:

java -DOPTIONS=plus -jar start.jar 

不過,我不熟悉Windows。可能

Jetty-Service.exe -DOPTIONS=plus 

會工作嗎?如果沒有,那麼在運行碼頭時查找將系統屬性「選項」設置爲「加號」的內容。

相關問題