1

すべてのものは、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.org から Jetty 7 pre3 をダウンロードしました。
jetty を抽出しましたC:\jetty-7.0.0pre3\(C:\jetty-7.0.0pre3\bin\ と他のディレクトリ
があります)。C:\jetty-7.0.0pre3\webapps\

web.xml に resource-ref があります。

<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>

から実行java -DOPTION=plus -jar start.jarしていC:\jetty-7.0.0pre3\ますが、次のエラーが表示されます。

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.Resourcestart.jar の可視領域にどのように追加すればよいですか?

4

1 に答える 1

2

Resource問題は、addLifeCycleがオブジェクトを受け取らないことです。sやsLifeCycleなどの実装が必要です。WebAppContextWebAppDeployer

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

うまくいくでしょうか?そうでない場合は、桟橋を実行するときにシステムプロパティ「OPTIONS」を「plus」に設定するものを探します。

于 2008-10-10T10:50:18.840 に答える