更具体地说,我得到了包含所有依赖项的可执行war。应用程序在没有jndi数据源的情况下启动,就像一个魅力一样,用jndi数据源运行它失败了。我认为在这样的配置中没有jetty.xml的位置,因此jetty-env.xml也不适用,因为jetty在默认情况下不会读取它。我试图使用jetty-web.xml进行jndi数据源配置,但jetty未能部署应用程序,返回503错误代码。我用的是9-M4型飞机。尝试tomcat池和BoneCP都有相同的结果。
初学者类:
import java.net.URL;
import java.security.ProtectionDomain;
import org.eclipse.jetty.server.*;
import org.eclipse.jetty.webapp.WebAppContext;
public final class Loader {
public static void main(String[] args) throws Exception
{
String jetty_home = "..";
int appli_port = 8080;
Server server = new Server(appli_port);
ProtectionDomain protectionDomain = Loader.class.getProtectionDomain();
URL location = protectionDomain.getCodeSource().getLocation();
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar(location.toExternalForm());
server.setHandler(webapp);
server.start();
server.join();
}
}
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<New id="testDS" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg></Arg>
<Arg>jdbc/testDS</Arg>
<Arg>
<New class="com.jolbox.bonecp.BoneCPDataSource">
<Set name="driverClass">org.postgresql.Driver</Set>
<Set name="jdbcUrl">jdbc:postgresql://localhost:5432/testDS</Set>
<Set name="username">name</Set>
<Set name="password">password</Set>
<Set name="minConnectionsPerPartition">5</Set>
<Set name="maxConnectionsPerPartition">50</Set>
<Set name="acquireIncrement">5</Set>
<Set name="idleConnectionTestPeriod">30</Set>
</New>
</Arg>
</New>
</Configure>
我怀疑jndi在jetty-web阶段的延迟或者配置是错误的。
很抱歉英语不好。
忘记提到我使用Hibernate作为ORM。
<resource-ref>
<description>Postgres datasource</description>
<res-ref-name>jdbc/testDS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<property name="hibernate.connection.datasource">java:comp/env/jdbc/testDS</property>
<property name="hibernate.connection.datasource">jdbc/testDS</property>
jetty-env.xml
应该自动从WEB-INF/jetty-env.xml中提取文件,请参见:http://www.eclipse.org/jetty/documentation/current/jetty-env-xml.html。我建议使用jetty-env.xml
而不是jetty-web.xml
。
您还可以展示如何在应用程序中执行JNDI查找吗?也许JNDI数据源初始化正确,但JNDI名称不正确?
这里有一些jetty JNDI示例:http://www.eclipse.org/jetty/documentation/current/jndi-datasource-examples.html
public static void main(String[] args) throws Exception
{
String jetty_home = "..";
int appli_port = 8080;
Server server = new Server(appli_port);
ProtectionDomain protectionDomain = Loader.class.getProtectionDomain();
URL location = protectionDomain.getCodeSource().getLocation();
WebAppContext webapp = new WebAppContext();
webapp.setContextPath("/");
webapp.setWar(location.toExternalForm());
// setup JNDI
EnvConfiguration envConfiguration = new EnvConfiguration();
URL url = new File("path to jetty-env.xml").toURI().toURL();
envConfiguration.setJettyEnvXml(url);
webapp.setConfigurations(new Configuration[] {new WebInfConfiguration(), envConfiguration, new WebXmlConfiguration()});
server.setHandler(webapp);
server.start();
server.join();
}
(见http://blog.armhold.com/2011/12/27/how-to-get-jndi-working-with-wicket-1-5-and-jetty-7-5/)
配置项说明 schemaName: # 逻辑数据源名称 dataSources: # 数据源配置,可配置多个 <data-source-name> <data-source-name>: # 与 ShardingSphere-JDBC 配置不同,无需配置数据库连接池 url: #数据库 URL 连接 username: # 数据库用户名 password: # 数据库
我在Java应用程序中使用HikariDataSource。我对使用它非常陌生。 这是我的配置: 在这里,我将设置为1。当我运行应用程序时,此连接通常处于空闲状态: 我想弄明白 一秒钟内一个连接可以处理多少个请求。 一个连接是否可以并行接受和处理多个请求,或者其他请求必须等到上一个请求完成? 任何建议都会有所帮助。
我的项目使用MySQL、JavaFX、Spring Boot、Spring Data JP和Hibernate框架/技术。 这是我的POM文件。 这是我的。属性配置。 这是我的主课 这是stacktrace: 上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆。工厂UnsatifiedPendencyException:创建名为“org”的bean时出错。sprin
我在我的application.properties文件中定义了一个数据源: 但是,当我尝试运行我的camelway时,我得到了这个错误:"在注册表中找不到bean:类型为:javax.sql.数据源的数据源"。我总是在Spring配置我的数据源,使用application.properties文件没有问题。 完整的错误日志: 我的骆驼路线: 编辑:我以编程方式添加了数据源,如下所示: 但是,现在
我目前正在从jboss 4.3迁移到jboss 7.1.1(最终版),我正在尝试配置oracle数据源,但它不起作用。以下是我为设置oracle数据源所做的工作 1) 下载了ojdbc6-11。jar并将其放在$JBOSS\u HOME/modules/com/oracle/ojdbc6/main文件夹中 2) 创建了文件模块。$JBOSS\u HOME/modules/com/oracle/oj
在建造中。我有: