`

SpringDM笔记6-Fragment及配置Log4j Fragment Bundle

 
阅读更多

   未配置日志配置文件前,系统会抛出下面异常:

   log4j:WARN No appenders could be found forlogger(org.springframework.osgi.extender.internal

   .boot.ChainActivator). log4j:WARN Please initialize the log4j system properly.

1. Using the fragement configuration pattern

    一个Fragment是一个incomplate的Bundle,没有指定主Bundle是不能单独存在的,他不许附属于一个Host

    Bundle. 它可以包含配置信息,classs文件,资源文件,但它不能有自己的Activator类或类加载器。

 

    The host bundle can’t itself be a fragment and must be a full-fledged bundle, even if it relies on its

    fragment to add classes or resources. A fragment can serve many purposes, such as completing

    its host bundle with specific classes or providing configuration through resources (property or XML

    files).

2. SpringDM's extender Export出来的通过Fragment可被修改的值:

    (1)spring-osgi-extender.jar Bean Values Exposed for Fragments:见附件spring-osgi-extender.jar 

    Bean Values Exposed for Fragments.jpg;

    (2)spring-osgi-web-extender.jar Bean Values Exposed for Fragments:见附件spring-osgi-web-

    extender.jar Bean Values Exposed for Fragments.jpg.

3. 实现Log4jFragment

    (1) Fragement目录结构:

    log4j-config/
       META-INF/

          MANIFEST.MF
       log4j.properties       

    (2)MAINFESt.MF文件:

     Manifest-Version: 1.0
     Fragment-Host: com.springsource.org.apache.log4j
     Bundle-Version: 1.0.0
     Bundle-Name: Log4J Configuration
     Created-By: 1.6.0_13 (Sun Microsystems Inc.)
     Bundle-ManifestVersion: 2
     Bundle-SymbolicName: com.springsource.org.apache.log4j.config

 

     (3) log4j.properties:

     log4j.rootLogger=INFO, FILE

     log4j.appender.FILE=org.apache.log4j.FileAppender
     log4j.appender.FILE.File=SpringDM.log
     log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
     log4j.appender.FILE.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n%M

    
     (4) 打包生成JAR:

     在log4j-config上一级目录中执行:

     jar cvfm log4j-config.jar log4j-config/META-INF/MANIFEST.MF -C log4j-config 。

     生成log4j-config.jar。

4.  安装该Fragement至OSGi 容器

     在config.ini文件组中增加:bundles/log/log4j-config.jar

     启动容器后,该Bundle的状态为:RESOLVED。

5.  实现启用SpringDM注解功能的Fragment

     (1)目录组织结构

     SpringDM-Annotation-config/
             META-INF/

                spring/

                      extender/

                            annotation-activator.xml

                MANIFEST.MF   

     (2) MANIFEST.MF文件

     Manifest-Version: 1.0
     Bundle-ManifestVersion: 2
     Fragment-Host: org.springframework.bundle.osgi.extender
     Bundle-SymbolicName: com.apress.springosgi.ch4.fragment
     Bundle-Name: HelloWorld Spring-OSGi Fragment
     Bundle-Description: Spring-DM Fragment for activating OSGi annotation scanning

     (3) annotation-activator.xml文件

     <?xml version="1.0" encoding="UTF-8"?>
     <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans.xsd">
            <bean id="extenderProperties">
                   <property name="process.annotations" value="true"/>
            </bean>
     </beans>

分享到:
评论

相关推荐

    前端开源库-react-addons-create-fragment

    然而,随着React的发展,`React.addons.createFragment`在React 16及更高版本中已经不再推荐使用。现在,我们可以使用`React.Fragment`或者简写`&lt;&gt;`和`&lt;/&gt;`来达到同样的效果,这既简洁又避免了不必要的DOM节点: ``...

    android-fragment学习笔记.pdf

    android-fragment学习笔记.pdf

    androidx-fragment-1.1.0.aar

    androidx-fragment-1.1.0.aar

    dynamic-fragment动态加载fragment

    6. 混合使用Support Library和原生Fragment时,注意版本兼容问题,确保所有Fragment使用同一版本的库。 通过理解并实践这些动态加载Fragment的知识点,开发者可以构建更适应各种设备屏幕和用户需求的Android应用。

    Android开发-FragmentTransaction-Fragment增加隐藏显示-完整Demo-AndroidStuidio

    4. **替换Fragment**: - `replace(int containerId, Fragment fragment)`方法会移除当前containerId指定容器中的所有Fragment,然后添加新的Fragment。 5. **隐藏/显示Fragment**: - `hide(Fragment fragment)`...

    一个Android -Fragment实例

    6. 使用FragmentPagerAdapter或FragmentStatePagerAdapter:在展示多个Fragment的场景下,比如在一个ViewPager中滑动切换Fragment,可以使用这两个Adapter。 7. 嵌套Fragment:一个Fragment中还可以包含其他...

    ch3-Fragment综合案例.rar

    在Android开发中,Fragment是应用程序界面的一个可重用组件,它可以在Activity中承载视图和逻辑,使得在不同屏幕尺寸和设备配置上构建灵活的用户界面成为可能。本压缩包"ch3-Fragment综合案例.rar"提供了一个关于...

    安卓开发-Fragment实现tab实例 代码.zip.zip

    4. **Fragment通信** - Fragment与Activity之间的通信通常通过接口或者回调实现,比如当Fragment的状态发生改变时,可以通知Activity。 - Fragment之间通信可以使用EventBus、LocalBroadcastManager或自定义接口,...

    Android--开发--Fragment动画效果.rar

    在Android应用开发中,Fragment是Android SDK中的一个重要组件,它允许开发者在单个活动中管理和展示多个界面。Fragment动画效果则是提升用户体验、增加应用交互性的一种重要手段。本资源"Android--开发--Fragment...

    Android-Fragment的封装启动Fragment只需要调用startFragment(XXOOFragment.class);

    在提供的NoFragment-master压缩包中,可能包含了实现上述封装的源代码示例。通过查看和学习这些代码,开发者可以更深入地理解如何有效地组织和管理Fragment,以及如何通过封装来提高开发效率。这不仅对初学者有帮助...

    navigation-keep-fragment-sample,.zip

    标题中的"navigation-keep-fragment-sample"暗示了这是一个关于Android应用程序开发的项目,特别是与导航组件(Navigation Component)和Fragment管理相关的。在这个示例中,开发者可能探讨了如何在使用Android ...

    Viewpager-Fragment 无限制添加

    在实现动态添加`Fragment`到`ViewPager`时,我们首先需要定义一个基础的`Fragment`类,这个类通常会继承自`androidx.fragment.app.Fragment`。在这个`Fragment`中,我们将编写页面的具体内容和布局。例如: ```java...

    Android高级应用源码-Fragment例子.zip

    在Android开发中,Fragment是应用程序界面的一个模块化组件,它可以在Activity中承载用户界面元素,使得开发者能够在不同屏幕尺寸和配置上构建灵活的布局。这个"Android高级应用源码-Fragment例子.zip"压缩包提供了...

    安卓FragmentTab选项卡相关-Fragment加入Pagerview效果.rar

    4. 在PagerAdapter中,根据需求重写相关方法,如`getItem(int position)`返回对应位置的Fragment实例。 5. 配置Adapter,将其设置到ViewPager中,确保Fragment与ViewPager之间的数据绑定正确。 6. 如果遇到运行问题...

    android-support-fragment-26.0.0-alpha1.jar

    android-support-fragment-26.0.0-alpha1.jar

    Android基础编程-Fragment介绍.pptx

    4. onDestroyView():当Fragment的视图被移除时调用,可能是因为Activity被销毁或Fragment被替换。 5. onDetach():当Fragment与Activity解除关联时调用,意味着Fragment将不再与Activity有直接联系。 创建Fragment...

    AndroidViewPager-Fragment实现QQ界面.zip

    - 为了在不同的Fragment之间传递数据,你可以使用`Bundle`在创建Fragment时传递参数,或者使用`EventBus`、`LiveData`等组件实现事件驱动的通信。 - Activity作为Fragment的容器,可以协调各个Fragment间的交互,...

    ToDoList - Fragment - 代码

    【标题】:“ToDoList - Fragment - 代码”指的是在Android应用开发中,使用Fragment实现一个待办事项(ToDoList)的经典案例。Fragment是Android SDK中的一个重要组件,它允许开发者在一个活动中展示多个相互独立的...

    Android高级应用源码-Fragment实现TabHost效果.zip

    4. **添加Fragment到Activity**:使用`FragmentManager`和`FragmentTransaction`将Fragment添加到Activity的布局中。每个TabLayout的标签可以关联一个Fragment,当用户点击标签时,`FragmentTransaction`会替换或...

Global site tag (gtag.js) - Google Analytics