FuseESB Enterprise 系统配置

一个0后IT之路 2012-05-22

Fuse ESB Enterprise 使用Felix 实现的OSGi Configuration Admin service来管理OSGi Services;Fuse ESB

Enterprise默认采用键值对方式配置在InstallDir/etc目录下面的.cfg文件中。

1. 系统配置

     etc/system.properties,etc/config.properties

2. JAAS安全

     (1) 配置文件

     InstallDir/etc/users.properties

     (2) JAAS控制台命令

     以jaas:*开头,具体命令那个用法可通过jaas:realms --help命令查看。

     A. 查看容器中现有的Realm:

     FuseESB:karaf@root> jaas:realms

IndexRealmModuleClass

                1 karaf                org.apache.karaf.jaas.modules.properties.PropertiesLoginModule

     B. 修改Standalone Container User Data

     FuseESB:karaf@root> jaas:manage --index 1

     FuseESB:karaf@root> jaas:manage --realm karaf

     C. 添加一个新的用户至JAAS Realm:

     karaf@root> jaas:useradd jdoe secret  #添加用户jdoe,密码secret

     karaf@root> jaas:roleadd jdoe admin   #给用户jdoe添加角色admin

     karaf@root> jaas:pending  # 查看将要添加的内容

     karaf@root> jaas:update  # 让添加的内容生效

     karaf@root> jaas:cancel  # 取消将要添加的内容

3. JMX配置

     配置文件:org.apache.karaf.management.cfg

     针对Standalone容器,默认的JMX用户名和密码是smx/smx; 针对Fabric容器,默认的JMX用户名和密码是

     admin/admin.

4. JBI组件Thread Pool配置

     (1) 组件配置文件:将下面模式匹配

     etc/org.apache.servicemix.components.ComponentName.cfg

     (2) 可参考:org.apache.servicemix.jbi.cfg,org.apache.servicemix.nmr.cfg

3.  热部署配置

      Fuse ESB Enterprise 默认热部署安装目录下的deploy文件夹中的组件,也可以通过/etc/org.apache.felix

      .fileinstall- deploy.cfg配置文件配置其他的热部署目录。

4.  使用config控制台命令

      (1) 列出当前Fuse ESB 内核中所有已经加载的配置:config:list

      (2) 修改一个配置,按照下面顺序执行:

            1. config:edit PID

            2. 显示该PID可用的配置选项:config:proplist

            3. 编辑一个属性:config:propset property value

            4. 将编辑的结果写入配置文件:config:update

            5. 取消本次的编辑结果:config:cancel

5.  日志配置

      Fuse Enterprise ESB默认使用OPS4J Pax Logging 系统,支持一下日志API;

      Apache Log4j, Apache Common Logging,SLF4J, Java Util Logging.

      (1) 配置文件:org.ops4j.pax.logging.cfg,org.apache.karaf.log.cfg,system.properties

      A. org.ops4j.pax.logging.cfg

      使用标准的Log4j设置root logger 级别为INFO,并且定义了两个Appender,一个用于Console,一个用于日志文件。

      默认启用日志文件,要启用控制台日志输出,可在该文件中添加:

      log4j.appender.stdout.append=true

      B. org.apache.karaf.log.cfg

      配置ESB控制台命令输出的形式。

      C. system.properties

      配置在OSGi容器启动时间内当日志服务不可用时的日志级别,默认为ERROR.

      org.ops4j.pax.logging.DefaultServiceLog.level=ERROR

      (2) 为每个Bundle记录日志,可做如下配置:

      Root Loger增加sift属性,如:

      # Root logger      log4j.rootLogger=INFO, out, sift, osgi:VmLogAppender

      重启容器后,每个Bundle的日志位于:

      data/log/BundleName.log

      (3) 日志命令:

      显示最近的日志:log:display

      显示最近的异常日志:log:display-exception

      获取当前的日志级别:log:get

      设置日志的级别:log:set

      继续显示日志:log:tail

      清空日志:log:clear

       (4) Logging per Application

      需要使用Mapped Diagnostic Context (MDC) logging,这样可以给每个应用程序设置一个Log File.

      但是当前支持MDC的只有log4j和sl4j.MDC日志的原理就是让日志信息与每个特定的应用上下文关联,即通过

      兼职对的集合进行,那么就需要给每个应用程序定义一个key,在程序运行期间,可以使用该key去记录每个应

      用程序对应的日志文件中。

      第一步:给应用程序添加静态的方法调用:

      // Java      org.slf4j.MDC.put("app.name","MyFooApp");

      或

      // Java      org.apache.log4j.MDC.put("app.name","MyFooApp");

      第二步:编辑etc/org.ops4j.pax.logging.cfg文件,添加sift Appender:

      # Sift appender

...

log4j.appender.sift.key=app.name

      log4j.appender.sift.appender.file=${karaf.data}/log/$\\{app.name\\}.log

      ......

6.  链接Fuse Maven Repository的Maven配置

<profiles>
	<profile>
		<id>my-profile</id>
		<activation>
			<activeByDefault>true</activeByDefault>
		</activation>
		<repositories>
			<repository>
				<id>fusesource</id>
				<url>http://repo.fusesource.com/nexus/content/groups/public/</url>
				<snapshots>
					<enabled>false</enabled>
				</snapshots>
				<releases>
					<enabled>true</enabled>
				</releases>
			</repository>
			<repository>
				<id>fusesource.snapshot</id>
				<url>http://repo.fusesource.com/nexus/content/groups/public-snapshots/
				</url>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
				<releases>
					<enabled>false</enabled>
				</releases>
			</repository>
			<repository>
				<id>apache-public</id>
				<url>https://repository.apache.org/content/groups/public/</url>
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
				<releases>
					<enabled>true</enabled>
				</releases>
			</repository>
		</repositories>
	</profile>
</profiles> 

相关推荐