(转)在jboss环境下读取.properties文件

本文介绍如何在JBoss服务器中通过.properties文件动态配置socket的IP、端口和超时时间,实现参数的灵活管理和服务器的高效运行。

转自

http://blog.youkuaiyun.com/nineday/article/details/1683437

 

    有时候有些常量需要根据需要作改动,如IP,port,数据库的链接URL等,一般情况下我们把这些常量放在后缀是.properties的文件里,这样既可以修改也很方便读取。下面是以jboss作服务器作的一个读取.properties的实验,很简单。
    ResourceBundle的getBundle("filename")方法会默认地到jboss的/server/conf/目录下找filename.properties文件,然后再调用ResourceBundle实例的getString("key"),通过关键字取得值。我曾经在纯jdk环境下作过同样的实验,默认会到.java的输出目录(按照习惯是bin/目录)下找filename.properties文件。

在Jboss的实验步骤如下:

(1)在jboss的/server/conf/ 下建一个属性文件--config.properties,其内容如下:
socket.ip=192.168.0.1
socket.port=60000
socket.timeout=10000

(2)读取的代码如下:

package  nineday.common;

import  java.util.MissingResourceException;
import  java.util.ResourceBundle;
/**
 * create on 20070709
 * 
@author nineday
 *
 * to get property from file .properties
 
*/

public   final   class  Config {

        
private static ResourceBundle configResource = null;
        
/**
         * initialization
         
*/

        
public static void initConfig(){
                
try{
                        configResource 
= ResourceBundle.getBundle("config");//file name
                }
catch(MissingResourceException mre){
                        mre.printStackTrace();
                }

        }


        
/**
         *get value
         *
@param String key
         *
@return String value
         
*/

        
public static String getValue(String key){
                
if (configResource == null) initConfig();
                
try{
                        
return new String(
                          (configResource.getString(key))
                          .getBytes(
"ISO8859_1"),"gb2312");
                }
catch(Exception e){
                        
return null;
                }

        }


}

 

(3)调用的代码:

package  nineday.socketservice;

import  nineday.common.Config;
import  java.net.Socket;

/**
 * to provide socket service
 * 
 * 
@author  nineday
 *
 
*/
public   class  SocketService {
 
// private static final Log log = LogFactory.getLog(SocketService.class);
  private   static   final  String socketServerIP  =  Config.getValue( " socket.ip " );
 
private   static   final   int  socketServerPort  =  Integer.parseInt(Config.getValue( " socket.port " ));
 
private   static   final   int  socketTimeout  =  Integer.parseInt(Config.getValue( " socket.timeout " ));

 
public   static  Socket getSocketInstance() throws  Exception{
  
// log.debug("start a new socket to "+socketServerIP+":"+socketServerPort);
  Socket socketServer  =   null ;
  socketServer
= new  Socket(socketServerIP,socketServerPort);
     socketServer.setSoTimeout(socketTimeout);
     
return  socketServer;
 }
}

注意:

(1)如果文件的路径是/server/conf/folder , 载入文件的代码这样写ResourceBundle.getBundle("folder.filename"); ‘.’代表的是文件的下一层,所以文件名一定不能包含‘.’。
(2)jboss在启动的时候加载属性文件到内存,所以当我们修改属性文件,必须重启jboss才能生效。

异常 : javax.ws.rs.NotSupportedException: RESTEASY003200: Could not find message body reader for type: class com.spotter.dtg.aetherflow.admin.adapter.web.request.LiteSearchFlowReq of content type: */* at org.jboss.resteasy.core.interception.ServerReaderInterceptorContext.throwReaderNotFound(ServerReaderInterceptorContext.java:53) at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.getReader(AbstractReaderInterceptorContext.java:80) at org.jboss.resteasy.core.interception.AbstractReaderInterceptorContext.proceed(AbstractReaderInterceptorContext.java:53) at org.jboss.resteasy.core.MessageBodyParameterInjector.inject(MessageBodyParameterInjector.java:198) at org.jboss.resteasy.core.MethodInjectorImpl.injectArguments(MethodInjectorImpl.java:91) at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:113) at org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:543) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:432) at org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$0(ResourceMethodInvoker.java:393) at org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:358) at org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:395) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:364) at org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:337) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:440) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:229) at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:135) at org.jboss.resteasy.core.interception.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:358) at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:138) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:215) at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:245) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:61) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) at org.apache.dubbo.rpc.protocol.rest.DubboHttpProtocolServer$RestHandler.handle(DubboHttpProtocolServer.java:89) at org.apache.dubbo.remoting.http.servlet.DispatcherServlet.service(DispatcherServlet.java:61) 的解决方案
03-12
【电力系统】单机无穷大电力系统短路故障暂态稳定Simulink仿真(带说明文档)内容概要:本文档围绕“单机无穷大电力系统短路故障暂态稳定Simulink仿真”展开,提供了完整的仿真模型与说明文档,重点研究电力系统在发生短路故障后的暂态稳定性问题。通过Simulink搭建单机无穷大系统模型,模拟不同类型的短路故障(如三相短路),分析系统在故障期间及切除后的动态响应,包括发电机子角度、速、电压和功率等关键参数的变化,进而评估系统的暂态稳定能力。该仿真有助于理解电力系统稳定性机理,掌握暂态过程分析方法。; 适合人群:电气工程及相关专业的本科生、研究生,以及从事电力系统分析、运行与控制工作的科研人员和工程师。; 使用场景及目标:①学习电力系统暂态稳定的基本概念与分析方法;②掌握利用Simulink进行电力系统建模与仿真的技能;③研究短路故障对系统稳定性的影响及提高稳定性的措施(如故障清除时间优化);④辅助课程设计、毕业设计或科研项目中的系统仿真验证。; 阅读建议:建议结合电力系统稳定性理论知识进行学习,先理解仿真模型各模块的功能与参数设置,再运行仿真并仔细分析输出结果,尝试改变故障类型或系统参数以观察其对稳定性的影响,从而深化对暂态稳定问题的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值