`
killko
  • 浏览: 102294 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Group-logo
Servicemix&Fu...
浏览量:0
社区版块
存档分类
最新评论

OSGI企业应用与Aries开源项目(2)

    博客分类:
  • osgi
阅读更多
    Aries JPA container是一个持久化容器,但它不类似Hibernate,而只是相当于Hibernate的一部分,它还需要如OpenJPA之类的JPA实现的支持,才能真正地完成持久化的工作。

    一个常见的OSGI JPA应用可以是这样的:若干个用JPA的规范编写的实体(Entity),集合在一个Bundle里,并用persistence.xml描述成一个持久化单元(persistence unit)。而persistence.xml里则通过JNDI将JDBC DataSource与该域绑定。最后,Aries JPA container就能将持久化单元的EntityManagerFactory或EntityManager提供给应用来引用。
   
    以下是一个例子:

    persistence.xml:
   
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
  <persistence-unit name="com.ponder.examples.jpa01PU" transaction-type="RESOURCE_LOCAL">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <non-jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/jpa01DS)</non-jta-data-source>
    <class>com.ponder.examples.jpa01.CustomerEntity</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
    </properties>
  </persistence-unit>
</persistence>


blueprint.xml:
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
           xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0">

    <cm:property-placeholder persistent-id="com.ponder.examples.jpa01">
        <cm:default-properties>
            <cm:property name="DS.DriverName" value="com.mysql.jdbc.Driver" />
            <cm:property name="DS.Url" value="jdbc:mysql://192.168.0.1:3306/mydb" />
            <cm:property name="DS.User" value="user" />
            <cm:property name="DS.Password" value="password" />
            <cm:property name="DS.InitialSize" value="5" />
            <cm:property name="DS.MinIdle" value="5" />
            <cm:property name="DS.MaxIdle" value="20" />
            <cm:property name="DS.MaxWait" value="1000" /> <!-- 1000毫秒 -->
            <cm:property name="DS.MaxActive" value="30" />
            <cm:property name="DS.LogAbandoned" value="true"/>
            <cm:property name="DS.RemoveAbandoned" value="true"/>
            <cm:property name="DS.RemoveAbandonedTimeout" value="180"/> <!-- 180秒 -->
            <cm:property name="DS.TestWhileIdle" value="true"/>
            <cm:property name="DS.TestOnBorrow" value="false"/>
            <cm:property name="DS.TestOnReturn" value="false"/>
            <cm:property name="DS.ValidationQuery" value="SELECT COUNT(0) FROM DUAL"/>
            <cm:property name="DS.ValidationQueryTimeout" value="1"/>
            <cm:property name="DS.TimeBetweenEvictionRunsMillis" value="30000"/>
            <cm:property name="DS.NumTestsPerEvictionRun" value="30"/>
        </cm:default-properties>
    </cm:property-placeholder>
    <bean  id="jpa01DS" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${DS.DriverName}" />
        <property name="url" value="${DS.Url}" />
        <property name="username" value="${DS.User}" />
        <property name="password" value="${DS.Password}" />
        <property name="initialSize" value="${DS.InitialSize}"/>
        <property name="minIdle" value="${DS.MinIdle}"/>
        <property name="maxIdle" value="${DS.MaxIdle}"/>
        <property name="maxWait" value="${DS.MaxWait}"/>
        <property name="maxActive" value="${DS.MaxActive}"/>
        <property name="logAbandoned" value="${DS.LogAbandoned}"/>
        <property name="removeAbandoned" value="${DS.RemoveAbandoned}"/>
        <property name="removeAbandonedTimeout" value="${DS.RemoveAbandonedTimeout}"/>
        <property name="testWhileIdle" value="${DS.TestWhileIdle}"/>
        <property name="testOnBorrow" value="${DS.TestOnBorrow}"/>
        <property name="testOnReturn" value="${DS.TestOnReturn}"/>
        <property name="validationQuery" value="${DS.ValidationQuery}"/>
        <property name="validationQueryTimeout" value="${DS.ValidationQueryTimeout}"/>
        <property name="timeBetweenEvictionRunsMillis" value="${DS.TimeBetweenEvictionRunsMillis}"/>
        <property name="numTestsPerEvictionRun" value="${DS.NumTestsPerEvictionRun}"/>
    </bean>
    <service ref="jpa01DS" interface="javax.sql.DataSource">
        <service-properties>
            <entry key="osgi.jndi.service.name" value="jdbc/jpa01DS"/>
        </service-properties>
    </service>
</blueprint>


    其中的关键点如下:
    1、持久化单元(PU)定义(persistence.xml);
    2、数据源(Datasource):采用apache的dbcp;
    3、blueprint通过placeholder配置DataSource,并发布DataSource服务,并注册到JNDI ;
    4、PU通过jndi引用Datasource;
    5、部署时,karaf通过configAdmin服务将etc/com.ponder.examples.jpa01.cfg的配置信息读入到blueprint的placeholder处。
分享到:
评论
1 楼 shishuwu 2016-07-20  
求Sample,谢谢

相关推荐

    node-v9.9.0-win-x86.zip

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v6.13.0-sunos-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    毕业设计Python基于LSTM的多步向前手术风险预测项目源代码+数据+论文

    毕业设计Python基于LSTM的多步向前手术风险预测项目源代码+数据+论文

    node-v9.2.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    258ssm-mysql-jsp 陆丰市医院分诊管理系统.zip(可运行源码+数据库文件+文档)

    医院分诊管理管理系统是典型的信息管理系统,其主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起一致性、完整性强和安全性好的数据库。而对于后者则要求应用程序具有功能完备,易使用等特点。经过分析如此情况,决定使用Java语言进行开发,利用其提供的各种面向对象的开发工具,数据库方面使用当前比较流行的mysql。 本系统主要包括以下功能:系统设置功能、患者管理模块、分诊管理功能、诊断管理功能。1) 系统设置模块 系统设置包括权限管理和用户信息。此模块主要功能包括: ·添加、修改、删除和查看用户信息; ·给用户分配权限; 2) 患者管理功能 此模块的主要功能包括: ·包括添加、修改、删除和查看患者信息; 3) 科室管理模块 此模块主要功能包括: ·包括添加、修改、删除和查看信息; 4) 分诊管理模块 本模块用于对分诊信息进行统计和查询,主要包括: ·分诊排队; ·分诊叫号; 关键字 面向对象;数据库;java;医院分诊管理系统;mysql。

    心电图机监控软件 vc++ 心电图机数据采集 曲线显示诊断病历源码.zip

    心电图机监控软件 vc++ ,心电图机数据采集 , 曲线显示, 诊断 , 病历

    node-v9.10.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    儿童编程启蒙之Scratch编程详解

    Scratch是一款专为儿童设计的图形化编程语言,通过直观易懂的界面和丰富的功能模块,帮助孩子们理解编程的基本概念,激发创新思维,培养解决问题的能力。本文将全面介绍Scratch的特点、应用及教育意义,为广大家长和教育工作者提供有益的参考。 Scratch作为一款专为儿童设计的图形化编程语言,以其直观易懂的界面和丰富的功能模块,为儿童编程启蒙教育提供了有力的支持。它不仅能够帮助孩子们掌握基本的编程技能,还能够培养他们的逻辑思维能力、创新精神和团队合作能力。因此,广大家长和教育工作者应该充分利用Scratch这一工具,为孩子们创造一个充满乐趣和挑战的编程学习环境,让他们在快乐中成长,为未来的学习和发展打下坚实的基础。

    node-v9.11.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    波士顿.py

    波士顿.py

    Fortran学习规划与基本案例.pdf

    这份文档是一份详细的Fortran语言学习规划及基本案例说明,对于希望学习和掌握Fortran编程语言的用户来说,是一份极为宝贵的参考资料。 首先,文档明确了学习Fortran的背景与目标,有助于学习者明确自己的学习方向和目的,从而更有针对性地进行学习。同时,文档还详细规划了学习内容和时间安排,从基础知识学习到项目实践与综合应用,每个阶段的学习任务都清晰明了,为学习者提供了一个系统的学习框架。 其次,文档还介绍了Fortran语言的基本用法和案例,包括变量声明与赋值、数组、程序结构与流程控制等方面的知识,并通过实例练习来帮助学习者加深对知识点的理解和应用。这些案例不仅具有代表性,而且具有很强的实用性,可以帮助学习者更好地掌握Fortran编程技能。 此外,文档还提供了学习方法与资源的建议,为学习者提供了多样化的学习途径和参考资料。无论是官方文档、教材与参考书目,还是在线学习平台和科研团队的经验分享,都为学习者提供了丰富的学习资源,有助于学习者更全面地了解Fortran语言的特点和应用。

    answer.sql

    answer.sql

    Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip

    Sora AI Video Preview Case Sora AI 视频模版项目,React全栈快速部署.zip

    最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar

    最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar最新试用版发货100虚拟商品自动发货系统 源码免费下载.rar

    ### Linux:信息、使用技巧和优缺点

    linux

    node-v8.16.0-x86.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v12.22.9-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    源代码-access 管理 系统 API 文件.zip

    源代码-access 管理 系统 API 文件.zip

    基于Qt的频谱分析器,修改于Spek,支持Windows和Linux平台.zip

    基于Qt的频谱分析器,修改于Spek,支持Windows和Linux平台

Global site tag (gtag.js) - Google Analytics