以上就是给各位分享java–DBUnit错误–缺少以下bean:[dbUnitDatabaseConnection,dataSource],其中也会对缺少javadoc是什么意思进行解释,同时本文还将
以上就是给各位分享java – DBUnit错误 – 缺少以下bean:[dbUnitDatabaseConnection,dataSource],其中也会对缺少javadoc是什么意思进行解释,同时本文还将给你拓展70.You configured the Flash Recovery Area (FRA) for your database. The database instance is running、Application Server JDBC资源的DataSource或ConnectionPoolDataSource、asp.net-mvc – WebSecurity.InitializeDatabaseConnection方法只能调用一次、asp.net-mvc-4 – 你必须调用“WebSecurity.InitializeDatabaseConnection”……但我已经有了等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:- java – DBUnit错误 – 缺少以下bean:[dbUnitDatabaseConnection,dataSource](缺少javadoc是什么意思)
- 70.You configured the Flash Recovery Area (FRA) for your database. The database instance is running
- Application Server JDBC资源的DataSource或ConnectionPoolDataSource
- asp.net-mvc – WebSecurity.InitializeDatabaseConnection方法只能调用一次
- asp.net-mvc-4 – 你必须调用“WebSecurity.InitializeDatabaseConnection”……但我已经有了
java – DBUnit错误 – 缺少以下bean:[dbUnitDatabaseConnection,dataSource](缺少javadoc是什么意思)
我正在尝试使用DBUnit,从不同的配置文件(不同的项目)加载多个数据库.
在我的Foo @Configuration文件中,我有以下bean:
@Bean(name="dataSourceFoo")
public DataSource dataSourceFoo() {
BasicDataSource dataSource = new BasicDataSource();
...
return dataSource;
}
在我的Bar @Configuration文件中,我有以下bean:
@Bean(name="dataSourceBar")
public DataSource dataSourceBar() {
BasicDataSource dataSource = new BasicDataSource();
...
return dataSource;
}
在第三个项目中,我的测试文件如下所示:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = ThirdProjectAppContextConfig.class)
@TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class,TransactionalTestExecutionListener.class,DbUnitTestExecutionListener.class })
@DatabaseSetups({
@DatabaseSetup(connection = "dataSourceFoo",value = "classpath:db/FooTest.xml"),@DatabaseSetup(connection = "dataSourceBar",value = "classpath:db/BarTest.xml") })
@TestPropertySource("/application.properties")
@DirtiesContext
@Transactional
public class FooBarTest {
@Autowired
private Service service;
@Test
public void test(){
service.callFooBar();
...
}
}
当我运行测试时,它会抛出以下错误:
java.lang.IllegalStateException: Unable to find a DB Unit database connection,missing one the following beans: [dbUnitDatabaseConnection,dataSource]
at com.github.springtestdbunit.DbUnitTestExecutionListener.getDatabaseConnectionUsingCommonBeanNames(DbUnitTestExecutionListener.java:141)
at com.github.springtestdbunit.DbUnitTestExecutionListener.prepareTestInstance(DbUnitTestExecutionListener.java:112)
at com.github.springtestdbunit.DbUnitTestExecutionListener.prepareTestInstance(DbUnitTestExecutionListener.java:87)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:228)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:217)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:276)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:278)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runchild(SpringJUnit4ClassRunner.java:236)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runchild(SpringJUnit4ClassRunner.java:87)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runchildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
任何人都知道为什么DBunit没有找到连接?
@DbUnitConfiguration(databaseConnection={"dataSourceFoo","dataSourceBar"})
更多信息,请点击Spring Test DBUnit
70.You configured the Flash Recovery Area (FRA) for your database. The database instance is running
Application Server JDBC资源的DataSource或ConnectionPoolDataSource
在应用程序服务器中创建JNDI
JDBC连接池时,我始终将类型指定为javax.sql.ConnectionPoolDataSource
。我从来没有考虑过太多,因为与非池化连接相比,更喜欢池化连接似乎很自然。
但是,在查看一些示例(专门针对Tomcat)时,我注意到它们指定了javax.sql.DataSource
。此外,似乎还有设置maxIdle
,maxWait
给人的印象是这些连接也被合并。无论选择的数据源类型如何,Glassfish都允许这些参数。
- 是否
javax.sql.DataSource
集中在应用程序服务器(或servlet容器)中? - 什么(如果有的话)的优势在那里为选择
javax.sql.ConnectionPoolDataSource
了javax.sql.DataSource
(反之亦然)?
答案1
小编典典是的,默认情况下,Tomcat确实对定义为JNDI上下文资源的数据源使用Apache DBCP池。
从位于http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-
howto.html#JDBC_Data_Sources的文档中
注意-
Tomcat中的默认数据源支持基于Commons项目中的DBCP连接池。但是,可以通过编写您自己的自定义资源工厂来使用实现javax.sql.DataSource的任何其他连接池,如下所述。
挖掘Tomcat 6的消息源显示,它们以这种方式获取连接工厂(以防万一,如果您不使用Context的“ factory”属性指定自己的连接工厂):
ObjectFactory factory = (ObjectFactory)Class.forName(System.getProperty("javax.sql.DataSource.Factory", "org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory")).newInstance();
- 实现javax.naming.spi.ObjectFactory的org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory负责创建DataSource实例:[http](http://www.jarvana.com/jarvana/view/org/apache/tomcat/tomcat-
- dbcp/7.0.2/tomcat-
- dbcp-7.0.2-sources.jar!/org/apache/tomcat/dbcp/dbcp/BasicDataSourceFactory.java?format=ok)
- //www.jarvana.com/jarvana/view/org/apache/tomcat/tomcat- dbcp / 7.0.2 /
tomcat-
dbcp-7.0.2-sources.jar!/org/apache/tomcat/dbcp/dbcp/BasicDataSourceFactory.java?format
= ok - 我看到他们创建了org.apache.tomcat.dbcp.dbcp.BasicDataSource的实例:[http](http://www.jarvana.com/jarvana/view/org/apache/tomcat/tomcat-
- dbcp/7.0.2/tomcat-
- dbcp-7.0.2-sources.jar!/org/apache/tomcat/dbcp/dbcp/BasicDataSource.java?format=ok)
- //www.jarvana.com/jarvana/view/org/apache/tomcat/tomcat-dbcp/7.0.2/tomcat-
dbcp-
7.0.2-sources.jar!/org/apache/tomcat/dbcp/dbcp/BasicDataSource.java?format =
ok
奇怪的是,此类本身并没有实现ConnectionPoolDataSource,org.apache.tomcat.dbcp.dbcp.PoolingDataSource也没有实现,它由BasicDataSource内部返回
http://www.jarvana.com/jarvana/view/org/apache/tomcat /tomcat-
dbcp/7.0.2/tomcat-
dbcp-7.0.2-sources.jar!/org/apache/tomcat/dbcp/dbcp/PoolingDataSource.java?format=ok
因此,我假定当您将DataSources配置为javax.sql.ConnectionPoolDataSource时,您还使用了一些自定义工厂(这只是一个猜测,但我想否则您将在Tomcat中具有类强制转换异常,因为它们的池并没有真正提供javax.sql.ConnectionPoolDataSource的实例,仅javax.sql.DataSource的实例)。
因此,要回答有关特定情况的优缺点的问题,应将Apache DBCP与数据源工厂中的池化机制进行比较,无论使用哪种方式。
asp.net-mvc – WebSecurity.InitializeDatabaseConnection方法只能调用一次
我创建了一个测试应用程序,使用VS2012 MVC4互联网应用程序模板,并添加了一个自定义的模型和控制器.
我已经在Azure上发布了它,并设法将“update-database”应用于Azure数据库.
当我在本地尝试应用程序,但使用Azure sql数据库,它的工作正常.
我可以登录/注册并使用我的测试控制器.
当我在线尝试应用程序,我可以使用测试控制器,但登录或注册链接给出以下异常:
Server Error in '/' Application. The "WebSecurity.InitializeDatabaseConnection" method can be called only once. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: system.invalidOperationException: The "WebSecurity.InitializeDatabaseConnection" method can be called only once. Source Error: An unhandled exception was generated during the execution of the current web request. information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [InvalidOperationException: The "WebSecurity.InitializeDatabaseConnection" method can be called only once.] WebMatrix.WebData.WebSecurity.InitializeMembershipProvider(SimpleMembershipProvider simpleMembership,DatabaseConnectionInfo connect,String userTableName,String userIdColumn,String userNameColumn,Boolean createTables) +123 WebMatrix.WebData.WebSecurity.InitializeProviders(DatabaseConnectionInfo connect,Boolean autocreateTables) +51 WebMatrix.WebData.WebSecurity.InitializeDatabaseConnection(String connectionStringName,Boolean autocreateTables) +52 MembershipTest2.Filters.SimpleMembershipInitializer..ctor() +193
你有什么想法来自哪里?
如果我调试(本地版本),此方法只调用一次.
谢谢.
解决方法
if (!WebMatrix.WebData.WebSecurity.Initialized) { WebSecurity.InitializeDatabaseConnection(...); }
asp.net-mvc-4 – 你必须调用“WebSecurity.InitializeDatabaseConnection”……但我已经有了
我的问题是不同的:我已经完成了WebSecurity.InitializeDatabaseConnection()调用,并设置了断点,所以我知道它已被执行.但我仍然得到无效操作异常,说我必须调用它.
与MVC控制器操作中包含它的大多数其他问题不同,我遇到了一个HttpModule,我编写了HttpModule来完成REST WebAPI控制器的身份验证. Init调用包含WebSecurity.InitializeDatabaseConnection调用.然后,OnAuthenticationRequest方法从请求的Authorization标头中提取用户名和密码信息,并调用SimpleMembershipProvider的ValidateUser方法.这是我得到例外的地方
You must call the
WebSecurity.InitializeDatabaseConnection
method
before you call any other method of theWebSecurity
class.
所以
a)当我已经达到了不能得到它的条件时,为什么我会得到这个例外.
b)可以做些什么呢?
解决方法
在文件夹App_Start中
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { var attr=new InitializeSimpleMembershipAttribute(); // here is the important part attr.OnActionExecuting(new ActionExecutingContext()); filters.Add(attr); } }
背景:在我的应用程序中,我有2个视图:
> /帐户/注册:这是标准asp.mvc 4模板的一部分,并具有[AllowAnonymous]属性
> / Task:这是todo-list的“Index”-View,TaskController的属性为[Authorize(Roles =“Administrator”)]
我总是在以下的引文中遇到问题:
>在浏览器中调试会话
>成功登录
>打开需要授权的视图“/ Task”
>切换到visual studio并保持浏览器打开
>停止调试
>更改控制器内的一些代码(设置一些空格就足够了)
>开始调试会话
>在浏览器中按刷新
此时,尚未调用类InitializeSimpleMembershipAttribute中的方法“OnActionExecuting”(通过设置断点确定)!
但是当我打开一个不需要授权的View(即/ Account / Register)时,调用了方法“OnActionExecuting”.在此之后,我可以无错误地调用/ Task.
所以解决方案是在应用程序启动时为“OnActionExecuting”创建一个“伪调用”.
我们今天的关于java – DBUnit错误 – 缺少以下bean:[dbUnitDatabaseConnection,dataSource]和缺少javadoc是什么意思的分享已经告一段落,感谢您的关注,如果您想了解更多关于70.You configured the Flash Recovery Area (FRA) for your database. The database instance is running、Application Server JDBC资源的DataSource或ConnectionPoolDataSource、asp.net-mvc – WebSecurity.InitializeDatabaseConnection方法只能调用一次、asp.net-mvc-4 – 你必须调用“WebSecurity.InitializeDatabaseConnection”……但我已经有了的相关信息,请在本站查询。
本文标签: