Tag: datasource

轻松启动独立JNDI服务器(并注册一些资源)

出于测试目的,我正在寻找一种简单的方法来启动独立的 JNDI服务器,并以编程方式将我的javax.sql.DataSource绑定到”java:/comp/env/jdbc/mydatasource” 。 服务器应该将自己绑定到某个URL,例如:“java.naming.provider.url = jnp:// localhost:1099”(不一定是JNP),这样我就可以从另一个进程查找我的数据源。 我不关心我必须使用哪个JNDI服务器实现(但我不想启动一个成熟的JavaEE服务器)。 这应该很容易,但令我惊讶的是,我找不到任何(工作)教程。

如何在JBoss中打开的连接池中正确保持数据库连接

我正在使用JBoss AS 7.1作为服务器,我的DataSource配置了池。 我对此很陌生,所以请原谅任何新手的错误…毕竟我在这里学习。 当客户端登录时,它会获得与数据库的连接,并且我需要保持该连接(从池中)打开,直到用户注销或HttpSession到期。 这是来自我们的数据库管理员的绝对要求。 谁说他需要DB会话变量。 我正在使用servlet来完成这一切。 玩我遇到的两个主要问题: 据我所知,JBoss会自动关闭未使用的连接=>我打开的连接返回到池中。 所以这可能不是正确的道路。 如果我尝试存储/调用Connection对象,如下所示: private Hashtable connections = new Hashtable(); try { String strDSName1 = “java:/OracleDSJNDI”; ctx = new InitialContext(); ds1 = (javax.sql.DataSource) ctx.lookup(strDSName1); System.out.println(“Got 1’st ds.”); } catch (Exception e) { System.out.println(“ERROR getting 1’st DS : ” + e); } connection = ds1.getConnection(); connections.put(session.getId(), connection); conn […]

使用Mockito模拟JdbcTemplate的DataSource

我正在尝试在Spring项目中测试一个类。 我想在测试类和dao类中进行尽可能多的更改,这样我就不必因为更改而重新测试所有类型的东西。 我正在使用的类有一个JdbcTemplate template类变量,该变量由以下实例化: setJdbcTemplate(DataSource dataSource) { this.template = new JdbcTemplate(dataSource); } 我想测试的方法使template.query()运行定义的SQL查询并将结果返回到列表。 我在我的测试用例中创建了以下内容,但我不确定如何使用它。 我可以使用Mockito使以下代码返回某个字符串列表吗? DataSource mockedDataSrc = Mockito.mock(DataSource.class); customerClassDao.setJdbcTemplate(mockedDataSrc); 我可以以某种方式使用when或another命令来设置我想要返回到JdbcTemplate的.query调用的内容吗?

Spring Boot jdbc数据源自动配置在独立的tomcat上失败

在尝试在独立的tomcat(7)实例上部署和启动Spring启动应用程序时,我们遇到了一个问题,即找不到自动配置的spring数据源bean并抛出相应的exception: Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [javax.sql.DataSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1060) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:920) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:815) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480) … 84 more 简单的jdbc spring.datasource在application.properties中正确配置,应用程序本身与嵌入式tomcat实例完美匹配,作为独立的spring引导应用程序。 看起来好像无法正确读取和/或处理application.properties文件,或者在数据源自动配置完成之前触发了一些其他bean(例如REST控制器中的服务)的注入。 不使用嵌入式tomcat时是否需要任何额外配置? 或者有没有人遇到过类似的问题? 简单的应用和配置: @EnableAutoConfiguration @Configuration @ComponentScan(“com.foo”) public class Application extends SpringBootServletInitializer { […]

Oracle getConnection运行缓慢

在Java项目中,我使用的是ojdbc6 jar com.oracle ojdbc6 11.2.0.1.0 compile 我运行一天的第一次,dataSource.getConnection()很快。 第二次通常没关系。 接下来的几次大约需要45秒。 之后,需要几分钟。 一旦我有一个给定应用程序运行的FIRST连接,我得到的任何新连接都非常快。 此延迟仅为给定运行获取FIRST连接。 是什么让我的第一次连接变得如此缓慢? 我正在观看netstat并且在成功运行后看不到任何连接。 尝试了几个不同的连接池( DBCP,C3PO )没有运气。 通过源代码进行调试, org.springframework.jdbc.datasource.DataSourceUtils的延迟是100%: Connection con = dataSource.getConnection(); 有任何想法吗? 编辑了更多细节 1)我正在使用连接池(DBCP或C3PO),它可以保存连接以备将来使用。 当我谈到获得新连接时,我的意思是在第一个连接正在使用时……我需要转到数据库并获得新连接。 当然,我可以一遍又一遍地从连接池返回并获得相同的连接。 但同时获得第二个也很快。 2)我不知道我的DB允许我登录多少个连接。 知道这个属性在oracle中的位置吗?

如何使用一个DataSource以编程方式更改Spring中的数据库?

我想看看在Spring中使用一个DataSources的最佳方法是什么,但能够从Java代码中切换数据库? 下面是我的两个DataSource,它们转到相同的数据库服务器但是不同的数据库。 我让他们绑定到他们各自的bean,但我正在查看我的遗留代码,用2个独立的bean实现它将非常尴尬。 在需要时,是否有关于如何使用一个DataSource和切换数据库的想法/想法?

如何从Web容器外部查找JNDI数据源?

我有以下环境设置: Java 1.5 Sun Application Server 8.2 Oracle 10 XE Struts 2 过冬 我很想知道如何编写可以引用应用程序服务器提供的JNDI数据源的Java客户端(即Web应用程序之外)的代码。 Sun Application Server的端口都是默认端口。 服务器配置中有一个名为jdbc / xxxx的JNDI数据源,但我注意到Web应用程序的Hibernate配置使用名称java:comp / env / jdbc / xxxx。 到目前为止,我见过的大多数例子都涉及代码 Context ctx = new InitialContext(); ctx.lookup(“jdbc/xxxx”); 但似乎我要么使用错误的JNDI名称,要么我需要配置jndi.properties或其他配置文件来正确指向监听器? 我有来自Sun Application Server的appserv-rt.jar,里面有一个jndi.properties,但似乎没什么帮助。 这里有一个类似的问题,但它没有给出任何代码/指的是让iBatis自动获取JNDI数据源: 从Web容器外部访问数据源(通过JNDI)

java.lang.ClassNotFoundException:com.microsoft.jdbc.sqlserver.SQLServerDriver:我加载了正确的驱动程序吗?

当我运行以下代码片段连接到数据源以通过查询获取数据时: try { String driver = “com.microsoft.jdbc.sqlserver.SQLServerDriver”; Class.forName(driver); String Url = “jdbc:sqlserver://localhost:1433;databaseName=movies”; Connection connection = DriverManager.getConnection(Url,”sa”, “xxxxxxx); // Context initContext = new InitialContext(); // Context envContext = (Context)initContext.lookup(“java:comp/env”); // DataSource ds = (DataSource)envContext.lookup(“”); // Connection connection = ds.getConnection(); String query_name = “select name from list where name='” + data + “‘”; 显示此exception跟踪: java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver at […]

java.lang.AbstractMethodError:com.mysql.jdbc.Connection.isValid(I)Z

我正在尝试使用数据源将我的Servlet连接到mysql数据库。 但每当我运行我的servlet时,我最终会得到这个exception: java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z org.apache.tomcat.dbcp.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:913) org.apache.tomcat.dbcp.dbcp2.PoolableConnection.validate(PoolableConnection.java:282) org.apache.tomcat.dbcp.dbcp2.PoolableConnectionFactory.validateConnection(PoolableConnectionFactory.java:356) org.apache.tomcat.dbcp.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2306) org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2289) org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2038) org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532) Servlet.AbdulTayyebs.processRequest(AbdulTayyebs.java:36) Servlet.AbdulTayyebs.doGet(AbdulTayyebs.java:57) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 这是我的Content.xml 这是我的web.xml DB Connection jdbc/abdultayyebs javax.sql.DataSource Container 这是我的servlet AbdulTayyebs import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.sql.DataSource; public class AbdulTayyebs extends HttpServlet { […]

使用javamail API发送带附件的电子邮件

我正在尝试使用Java发送带有附件的电子邮件。 当我发送没有附件的电子邮件时,我收到了电子邮件,但是当我添加附件时,我没有收到任何内容,我也没有收到任何错误消息。 这是我正在使用的代码: public void send () throws AddressException, MessagingException{ //system properties Properties props = new Properties(); props.put(“mail.smtp.localhost”, “localhost”); props.put(“mail.smtp.host”,Configurations.getInstance().email_serverIp); /* * create some properties and get the default Session */ session = Session.getDefaultInstance(props, null); //session Session session = Session.getInstance(props, null); Message message = new MimeMessage(session); message.setFrom(new InternetAddress(“zouhaier.mhamdi@gmail.com”)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(“zouhaier.mhamdi@gmail.com”)); message.setSubject(“Testing Subject”); message.setText(“PFA”); MimeBodyPart messageBodyPart […]