GVKun编程网logo

java – DBUnit错误 – 缺少以下bean:[dbUnitDatabaseConnection,dataSource](缺少javadoc是什么意思)

11

以上就是给各位分享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是什么意思)

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没有找到连接?

最佳答案
com.github.springtestdbunit.DbUnitTestExecutionListener.prepareTestInstance(DbUnitTestContextAdapter)正在查找数据库配置,找不到我定义的数据库配置,dbunit默认使用“dataSource”.在测试类上放置以下配置将解决问题:

@DbUnitConfiguration(databaseConnection={"dataSourceFoo","dataSourceBar"})

更多信息,请点击Spring Test DBUnit

70.You configured the Flash Recovery Area (FRA) for your database. The database instance is running

70.You configured the Flash Recovery Area (FRA) for your database. The database instance is running

70.You configured the Flash Recovery Area (FRA) for your database. The database instance is running in ARCHIVELOG mode. The default location for the archived redo log files is the Flash Recovery Area. Which two files are removed automatically if the space is required in the FRA as per the retention policy? (Choose two.) A.flashback log files B.backups that have become obsolete C.copies of the data files and control files D.archived redo log files that have multiple copies in a different archive location and not backed up 答案:AB 解析: 闪回恢复区分为2类文件       i.永久文件         a.控制文件 :oracle仅在安装期间在闪回恢复区中存储一个控制文件的副本         b.联机重做日志文件:可将每个重做日志文件组的一个镜像副本保存在闪回恢复区       ii.临时文件               a.归档重做日志:配置闪回恢复区的时候,会将一组归档重做日志文件存储在闪回恢复区中         b.闪回日志:启用闪回数据库时,会在闪回恢复区中存储闪回日志         c.控制文件自动备份:rman会在闪回恢复区中存储控制文件自动备份,在rman备份第一个数据文件                       (是system表空间的一部分时),rman备份中将自动包含控制文件         d.数据文件副本:如果使用rman命令的backup as copy,则会将数据文件副本默认存储在闪回恢复区         e.rman备份集:使用backup as backupset命令创建的文件都存储在闪回恢复区中         f.rman文件:默认情况下,rman将闪回恢复区用作备份归档日志文件以及从磁盘或磁带进行恢复的中转区 当低于db_recovery_file_dest_size参数定义值得15%时,将会生成警报,当低于3%时将产生危险性警报 手动删除fra中固定文件会产生无法预料的结果,oracle不会立刻检测出这些文件已经删除,因此不会 回收相应的空间,如果手动删除了,那么应该使用rman crosscheck命令结合delete命令使oracle更新 fra上的当前控制文件信息,尽量不要手动删除由oracle管理的文件  当闪回日志文件和备份文件过期,并且空间紧张的时候oracle会自动删除,如果保存位置不在fra中的时候,oracle 只是标记过期,操作系统对应的物理文件是不会被删除的

Application Server JDBC资源的DataSource或ConnectionPoolDataSource

Application Server JDBC资源的DataSource或ConnectionPoolDataSource

在应用程序服务器中创建JNDI
JDBC连接池时,我始终将类型指定为javax.sql.ConnectionPoolDataSource。我从来没有考虑过太多,因为与非池化连接相比,更喜欢池化连接似乎很自然。

但是,在查看一些示例(专门针对Tomcat)时,我注意到它们指定了javax.sql.DataSource。此外,似乎还有设置maxIdlemaxWait给人的印象是这些连接也被合并。无论选择的数据源类型如何,Glassfish都允许这些参数。

  • 是否javax.sql.DataSource集中在应用程序服务器(或servlet容器)中?
  • 什么(如果有的话)的优势在那里为选择javax.sql.ConnectionPoolDataSourcejavax.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方法只能调用一次

asp.net-mvc – WebSecurity.InitializeDatabaseConnection方法只能调用一次

我正在尝试 Windows Azure来托管一个MVC4 Web应用程序.
我创建了一个测试应用程序,使用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”……但我已经有了

asp.net-mvc-4 – 你必须调用“WebSecurity.InitializeDatabaseConnection”……但我已经有了

我已经阅读了关于这个主题的一些SO问题,但似乎都在处理你应该把这个电话放在哪里.

我的问题是不同的:我已经完成了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 theWebSecurityclass.

所以

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”……但我已经有了的相关信息,请在本站查询。

本文标签: