Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何编写一个或多或少充当容器的应用程序?_Java_Hibernate_Transactions_Containers - Fatal编程技术网

Java 如何编写一个或多或少充当容器的应用程序?

Java 如何编写一个或多或少充当容器的应用程序?,java,hibernate,transactions,containers,Java,Hibernate,Transactions,Containers,我正在计划一个应用程序,它必须提供与JavaEE容器到第三方扩展代码非常相似的服务。基本上,这个应用程序所做的就是找到一组工作项(目前计划使用Hibernate)并将它们分派给工作项消费者 工作项使用者加载项详细信息,调用第三方扩展代码,然后如果第三方代码没有失败,则更新工作项的某些状态并提交所有已完成的工作 我明确地说,这不是作为JavaEE应用程序编写的。但是,本质上,我的应用程序必须提供容器的许多服务;它必须提供事务管理、连接池和管理以及一定数量的部署支持。我如何A)直接提供这些,或B)选

我正在计划一个应用程序,它必须提供与JavaEE容器到第三方扩展代码非常相似的服务。基本上,这个应用程序所做的就是找到一组工作项(目前计划使用Hibernate)并将它们分派给工作项消费者

工作项使用者加载项详细信息,调用第三方扩展代码,然后如果第三方代码没有失败,则更新工作项的某些状态并提交所有已完成的工作

我明确地说,这不是作为JavaEE应用程序编写的。但是,本质上,我的应用程序必须提供容器的许多服务;它必须提供事务管理、连接池和管理以及一定数量的部署支持。我如何A)直接提供这些,或B)选择第三方库提供它们。由于较大项目的需求,扩展编写器将使用Hibernate,如果这有什么区别的话


值得注意的是,在我提到的所有特性中,我所知最少的是事务管理。如何为容器中运行的扩展代码提供此服务?

您好,我建议使用Spring框架。它提供了一种很好的方式,可以将您正在谈论的各种服务集合在一起

例如,为了满足您的特定需求:

  • 事务管理/连接池
    • 我构建了一个基于spring的独立应用程序,它使用apachecommons连接池。我还相信spring内置了某种事务管理
  • 部署支持
    • 我使用ant作为前端加载程序进行部署和运行。它工作得很好。我只是使用ant来运行我的Spring单机版应用程序来完成一个单独的进程
  • 穿线。
    • Spring支持Quartz,它可以很好地处理线程和线程池
    • Spring与Hibernate和其他类似项目很好地集成
  • 配置
    • 使用它的xml属性定义——Spring非常适合于多环境配置

  • 嗨,我推荐使用Spring框架。它提供了一种很好的方式,可以将您正在谈论的各种服务集合在一起

    例如,为了满足您的特定需求:

  • 事务管理/连接池
    • 我构建了一个基于spring的独立应用程序,它使用apachecommons连接池。我还相信spring内置了某种事务管理
  • 部署支持
    • 我使用ant作为前端加载程序进行部署和运行。它工作得很好。我只是使用ant来运行我的Spring单机版应用程序来完成一个单独的进程
  • 穿线。
    • Spring支持Quartz,它可以很好地处理线程和线程池
    • Spring与Hibernate和其他类似项目很好地集成
  • 配置
    • 使用它的xml属性定义——Spring非常适合于多环境配置

  • Spring确实有事务管理。可以使用ApacheDBCP在应用程序上下文中定义数据源(对数据源使用
    org.apache.commons.dbcp.BasicDataSourceorg.springframework.jdbc.datasource.DataSourceTransactionManager
    。之后,应用程序中的任何对象都可以通过编程方式定义自己的事务,如果您将其传递给TransactionManager,或者您可以在应用程序中对对象的定义使用AOP拦截器定义需要在事务内部运行的方法

    或者,现在使用Spring更容易的方法是在需要在事务内部运行的任何方法中使用@Transactional注释,并将类似的内容添加到应用程序上下文中(假设您的transactionManager名为txManager):


    通过这种方式,您的应用程序将很容易在以后接受新组件,只需使用@Transactional注释或通过PlatformTransactionManager直接创建事务即可进行事务管理,这些事务将通过setter接收(因此,您可以在应用程序上下文中定义对象时传递它).

    Spring确实有事务管理。您可以使用Apache DBCP在应用程序上下文中定义数据源(对数据源使用
    org.apache.commons.dbcp.BasicDataSourceorg.springframework.jdbc.datasource.DataSourceTransactionManager
    。之后,应用程序中的任何对象都可以通过编程方式定义自己的事务,如果您将其传递给TransactionManager,或者您可以在应用程序中对对象的定义使用AOP拦截器定义需要在事务内部运行的方法

    或者,现在使用Spring更容易的方法是在需要在事务内部运行的任何方法中使用@Transactional注释,并将类似的内容添加到应用程序上下文中(假设您的transactionManager名为txManager):

    通过这种方式,您的应用程序将很容易在以后接受新组件,只需使用@Transactional注释或通过PlatformTransactionManager直接创建事务即可进行事务管理,这些事务将通过setter接收(因此,您可以在应用程序上下文中定义对象时传递它).

    您可以在J2SE环境中尝试Java事务管理和连接池(JDBC+JMS)。不需要任何应用服务器,而且使用起来更有趣;-)

    嗯 Guy

    您可以在J2SE环境中尝试Java事务管理和连接池(JDBC+JMS)。不需要任何应用服务器,而且使用起来更有趣;-)


    盖伊

    回答得好,但石英是用于调度的,而不是用于调度