gpt4 book ai didi

java - 在jetty(jetty-env.xml)中定义两个数据源

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:56 24 4
gpt4 key购买 nike

我正在尝试使用 jetty-env.xml 文件在我的 Web 应用程序中定义两个数据源。它仅适用于一个数据源,但在添加第二个数据源时出现此异常:

java.lang.IllegalStateException: Nothing to bind for name javax.sql.DataSource/default

这是我的配置:

jetty-env.xml

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<New id="ds" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg>jdbc/mybd1</Arg>
<Arg>
<New class="com.mchange.v2.c3p0.ComboPooledDataSource">
<Set name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set>
<Set name="jdbcUrl">jdbc:jtds:sqlserver://url:1433/mybd1</Set>
<Set name="user">xx</Set>
<Set name="password">yy</Set>
</New>
</Arg>
</New>

<New id="ds2" class="org.eclipse.jetty.plus.jndi.Resource" >
<Arg>jdbc/mybd2</Arg>
<Arg>
<New class="com.mchange.v2.c3p0.ComboPooledDataSource">
<Set name="driverClass">com.microsoft.sqlserver.jdbc.SQLServerDriver</Set>
<Set name="jdbcUrl">jdbc:jtds:sqlserver://url:1433/mybd2</Set>
<Set name="user">xx</Set>
<Set name="password">yy</Set>
</New>
</Arg>
</New>
</Configure>

web.xml

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

hibernate.cfg.xml(还有一个hibernate.cfb.xml配置第二个数据源)

<session-factory>
<property name="connection.datasource">jdbc/mybd1</property>
<!-- ... -->

有什么线索吗?

最佳答案

我还没有机会测试它,但在我看来你的问题是你缺少一个 <Arg />范围。

您的 DS 应该是:

    <New id="ds" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/mybd1</Arg>
<Arg>
<New class="com.mchange.v2.c3p0.ComboPooledDataSource">

等等

第一个“Arg”是作用域,没有它,您的其余论点就不合适了,并且可能会导致您的问题。

关于java - 在jetty(jetty-env.xml)中定义两个数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com