对于Apacheconfiguration帮助–为什么不同的进程“在不同的时区”?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍不同进程所执行的代码也不同,并为您提供关于Apache的Wind
对于Apacheconfiguration帮助 – 为什么不同的进程“在不同的时区”?感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍不同进程所执行的代码也不同,并为您提供关于Apache的Windows虚拟目录configuration帮助、configurationnginx使用相同的URI将不同的文件返回给不同的authentication用户、org.apache.commons.configuration.AbstractConfiguration的实例源码、org.apache.commons.configuration.AbstractFileConfiguration的实例源码的有用信息。
本文目录一览:- Apacheconfiguration帮助 – 为什么不同的进程“在不同的时区”?(不同进程所执行的代码也不同)
- Apache的Windows虚拟目录configuration帮助
- configurationnginx使用相同的URI将不同的文件返回给不同的authentication用户
- org.apache.commons.configuration.AbstractConfiguration的实例源码
- org.apache.commons.configuration.AbstractFileConfiguration的实例源码
Apacheconfiguration帮助 – 为什么不同的进程“在不同的时区”?(不同进程所执行的代码也不同)
我有一个VPS服务器上运行的Apache 2(运行Debian)。 我最近改变了从America / New_York到America / Los_Angeles的服务器上的时区(使用dpkg-reconfigure tzdata)以匹配我在整个国家的移动。 自从进行更改以来,我也重新启动了虚拟机。
但是,Apache进程似乎在时区之间摇摆不定。 从access_log中查看这个片段:
127.0.0.1 - - [02/Oct/2008:23:01:13 -0700] "GET /favicon.ico HTTP/1.0" 301 - "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3" 127.0.0.1 - - [03/Oct/2008:02:01:25 -0400] "GET /tag/wikipedia/?page=1 HTTP/1.0" 200 5984 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 127.0.0.1 - - [03/Oct/2008:02:01:36 -0400] "GET /index.atom HTTP/1.0" 200 7648 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.2) Gecko/2008091618 Firefox/3.0.2" 127.0.0.1 - - [03/Oct/2008:02:01:45 -0400] "GET /tag/moblog/ HTTP/1.0" 200 6563 "-" "msnbot/1.1 (+http://search.msn.com/msnbot.htm)" 127.0.0.1 - - [02/Oct/2008:23:01:46 -0700] "GET /tag/opensource/ HTTP/1.0" 200 5954 "-" "msnbot/1.1 (+http://search.msn.com/msnbot.htm)" 127.0.0.1 - - [03/Oct/2008:02:01:56 -0400] "GET /tag/dopplr/ HTTP/1.0" 200 3407 "-" "msnbot/1.1 (+http://search.msn.com/msnbot.htm)"
它从23:01跳到02:01然后回来。 任何想法如何保持一致?
在PHP中使用系统的时区设置
在带有BST时区的窗口上使用python datetime.datetime.strptime
替代cron?
更改tomcat的时区
如何在Windows上优雅地打印Perl中的%z(timezone)格式?
时区规则的Linux /跨平台API? (replace锁localtime_r)
更改Tomcat中的时区
GetSystemTimeZones缺lessGMT标准时间
Windows程序如何暂时更改其时区?
时区在date?
你有没有机会使用ntpd和你同步的同龄人是片状?
事实证明,我在这个Apache实例上运行了两个Django项目,其中一个我已经固定指向America / Los_Angeles,但另一个我留下了。 取决于在创建新的Apache进程时首先访问的是哪个应用程序,这会浪费时间!
可能有些Apache工作进程是在更改时区之前启动的,有些则是之后启动的。 自从更改系统时区设置后,您是否完全停止并重新启动了Apache?
Apache的Windows虚拟目录configuration帮助
我通过Xampplite在Windows XP上运行Apache,并可以使用帮助来configuration我的虚拟目录。 以下是我希望在开发箱上做的事情:
我希望我的源文件能够在xampp htdocs目录之外生存
在我的本地机器上,我可以通过http:// myproject访问该项目
我的本地networking上的其他人可以访问my.ip.address / myproject中的项目
保持localhost指向xampp的htdocs文件夹,这样我可以轻松地添加其他项目。
通过编辑windows hosts文件,并在xampp的apache conf extra httpd-vhosts.conf文件中添加一个虚拟目录,我得到了1&2的工作。 我不会马上看到如何做3,而不会搞乱4。
Nginx – 我可以添加一个新的虚拟主机,而无需重新启动服务器?
Tomcat Cookie不能通过我的ProxyPass VirtualHost工作
错误28105#0:* 1在读取来自上游的响应头时,在stderr中发送了FastCGI:“主脚本未知”
Apache DocumentRoot到虚拟主机的networking目录
Apache,Tomcat,端口80,8080和其他东西的组合
想出来:使用别名 #3,而不是VirtualHost,因此:
Alias /myproject "C:/path/to/my/project" <Directory "C:/path/to/my/project"> Options Indexes FollowSymLinks MultiViews ExecCGI AllowOverride All Order allow,deny Allow from all </Directory>
完成您的需求清单。
1)制作目录:
mkdir c: xampp sites myproject
2)编辑c: windows system32 drivers etc hosts,使其包含以下行:
127.0.0.1 myproject
并将以下内容添加到c: xampp apache conf extra httpd-vhosts.conf中:
NameVirtualHost myproject:80 <VirtualHost myproject:80> DocumentRoot c:/xampp/sites/myproject Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory>
3)将以下行添加到c: xampp apache conf httpd.conf的末尾:
Alias /myproject/ "/xampp/sites/myproject/" <Directory "/xampp/sites/myproject"> AllowOverride None Options None Order allow,deny Allow from all </Directory>
4)将DocumentRoot,Directory等放在c: xampp apache conf httpd.conf中以完成此操作。 作为参考,这些行将是:
DocumentRoot "/xampp/htdocs" <Directory /> Options FollowSymLinks AllowOverride None Order deny,allow Deny from all </Directory> <Directory "/xampp/htdocs"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory>
首先启用:Loadmodulee alias_module modules / mod_alias.so
<Ifmodulee alias_module> Alias /ddd "D:/prj/customer/www" <Directory "D:/prj/customer/www"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride all Order allow,deny Allow from all </Directory> </Ifmodulee>
测试WAMP 2.2及其工作:http:// localhost / ddd
NameVirtualHost myproject:80 <VirtualHost myproject:80>
</ Directory>
一定是:
NameVirtualHost myproject:80 <VirtualHost myproject:80>
</ VirtualHost>
问候;)
解决了这个问题。 它缺少目录标记。
NameVirtualHost myproject:80 <VirtualHost myproject:80> DocumentRoot "D:/Solution" <Directory "D:/Solution"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
在httpd.conf中添加以下几行,必须作必要的修改:
<Ifmodulee alias_module> Alias /angular-phonecat "C:/DEV/git-workspace/angular-phonecat" </Ifmodulee> <Directory "C:/DEV/git-workspace/angular-phonecat"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride all Order allow,deny Allow from all Require all granted </Directory>
在重新启动Apache服务器之后,这对我的(Windows)XAMPP安装很有帮助。 我不得不添加“要求所有授予”,但其他方面与上述答案几乎相同。
以最简单的方式解决问题,减少步骤无需创建虚拟主机,只需更改目标目录的位置即可。
以下是我为配置所做的工作:我已经通过编辑C:/xampp/apache/conf/httpd.conf文件完成了我在httpd.conf文件中完成的Changings在ScriptAlias / cgi-bin / “C:/ XAMPP /阿帕奇)/”
Alias / projectXYZ“C:/ pathtomyproject”选项索引FollowSymLinks MultiViews ExecCGI AllowOverride所有命令允许,拒绝全部允许
Pathtomyproject =项目的完整路径
并更改了Document Root DocumentRoot的“C:/ pathtomyproject”
现在通过停止服务器重新启动Apache服务器。 我已经停止了Apache服务器,然后再次启动Apache服务器。
资料来源: http : //bytespedia.blogspot.com/2013/12/creating-virtual-directory-in-apache.html
总结
以上是小编为你收集整理的Apache的Windows虚拟目录configuration帮助全部内容。
如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。
configurationnginx使用相同的URI将不同的文件返回给不同的authentication用户
我正在使用Nginx在embedded式系统中提供静态文件,没有CGI后端。 我有多个用户名/密码的基本身份validation。 我想有一个特定的URI根据当前通过身份validation的用户的名称提供不同的内容。
例如,假设浏览器请求URI /index.html。 如果浏览器被authentication为用户“开发者”,那么它可以被提供给文件/index_developer.html。 如果浏览器被authentication为“pipe理员”,则可以将其提供给文件/index_administrator.html。
我只希望这个redirect发生在一小组文件上; 大部分将按现状提供服务。 我还需要阻止对实际文件的直接访问,以便没有人能够对系统进行最终运行。
在java web应用程序-websphere中获取Windows当前logging的用户
如何从文件系统中监视的共享文件夹中的文件中获取用户名
如何在login后在下一个表单中的标签上显示欢迎用户名?
Windows用户名最大长度
从以本地系统帐户启动的程序获取当前用户名
给定一个Linux用户名和密码如何testing它是否是一个有效的帐户?
从SessionID获取Windows用户名
psutil.WindowsService.username()返回空白
覆盖Windows环境variables值?
validation用户详细信息并自动loginWindows
首先,有$remote_user变量。
我已经结束了以下结构:
$ tree . ├── _auth │ ├── admin │ │ ├── f │ │ │ └── index.html │ │ ├── hello.html │ │ └── index.html │ └── user │ ├── f │ │ └── index.html │ └── index.html ├── f │ └── x.html ├── hello.html ├── test.html └── x └── index.html
和这个Nginx配置:
auth_basic "Restricted area"; auth_basic_user_file path/to/passwd/file; root /path/to/root; location / { try_files /_auth/$remote_user$uri /_auth/$remote_user$uri/index.html $uri $uri/index.html =404; } location /_auth/ { internal; }
所以请求/将在/_auth/USER/index.html结束,请求/test.html将服务于/test.html 。 请求/hello.html将为用户admin和/hello.html为其他任何用户提供/_auth/admin/hello.html 。
internal指令禁止直接访问/_auth/..
尽管我接受Alexy Ten的回答,但是由于他的洞察力让我在那里,我最终采用了一个稍微不同的方案。
不是让用户特定的文件驻留在一个完全独立的树中,而是选择让它们生存在通用文件的旁边,但添加了_user_<userName>_的标准前缀。 例如,我可能在webroot中有以下两个文件:
/scripts/menus.js
/scripts/_user_developer_menus.js
然后,如果以用户“developer”身份登录,则将为第二个文件提供对/scripts/menus.js的请求,但对于其他任何用户,第一个文件将被提供。
这是我的Nginx配置的核心:
location ~ "^.*/_user_[^/]*$" { internal; } location ~ "^(.*)/([^/]*)$" { auth_basic_user_file /opt/product/cfg/Nginx_conf/htpasswd; try_files $1/_user_${remote_user}_$2$is_args$args $1/_user_${remote_user}_$2/index.html$is_args$args $1/$2$is_args$args $1/$2/index.html$is_args$args =404; }
由于两个位置都是特定的(都是正则表达式),所以它们按顺序被搜索。 因此,第一个位置会阻止直接访问任何_user_<userName>_文件。 第二个位置与任何URL匹配,文件名保留在$1的路径以及文件名保留在$1 。 然后,try_files依次查找用户特定的文件,用户特定的目录,公用文件和公用目录,直到它放弃404错误。
简单的root /path/to/root/$remote_user是为我工作的。
注意:如果在auth_basic_user_file使用$document_root (如auth_basic_user_file $document_root/.htpasswd; ),那么.htpasswd文件应该位于所有子目录中,而不仅仅是根目录
$ tree -a . ├── .htpasswd ├── user1 │ ├── hello1 │ └── .htpasswd -> ../.htpasswd ├── user2 │ ├── hello2 │ └── .htpasswd -> ../.htpasswd └── user3 ├── hello3 └── .htpasswd -> ../.htpasswd
org.apache.commons.configuration.AbstractConfiguration的实例源码
public static AbstractConfiguration createDynamicConfig() { LOGGER.info("create dynamic config:"); ConcurrentCompositeConfiguration config = ConfigUtil.createLocalConfig(); DynamicWatchedConfiguration configFromConfigCenter = createConfigFromConfigCenter(config); if (configFromConfigCenter != null) { ConcurrentMapConfiguration injectConfig = new ConcurrentMapConfiguration(); config.addConfigurationAtFront(injectConfig,"extraInjectConfig"); duplicateServiceCombConfigToCse(configFromConfigCenter); config.addConfigurationAtFront(configFromConfigCenter,"configCenterConfig"); configFromConfigCenter.getSource().addUpdateListener(new ServiceCombPropertyUpdateListener(injectConfig)); } return config; }
@Test public void testCreateDynamicConfigNoConfigCenterSPI() { new Expectations(SPIServiceUtils.class) { { SPIServiceUtils.getTargetService(ConfigCenterConfigurationSource.class); result = null; } }; AbstractConfiguration dynamicConfig = ConfigUtil.createDynamicConfig(); MicroserviceConfigLoader loader = ConfigUtil.getMicroserviceConfigLoader(dynamicConfig); List<ConfigModel> list = loader.getConfigModels(); Assert.assertEquals(loader,ConfigUtil.getMicroserviceConfigLoader(dynamicConfig)); Assert.assertEquals(1,list.size()); Assert.assertNotEquals(DynamicWatchedConfiguration.class,((ConcurrentCompositeConfiguration) dynamicConfig).getConfiguration(0).getClass()); }
@BeforeClass public static void beforeCls() { ConfigUtil.installDynamicConfig(); AbstractConfiguration configuration = (AbstractConfiguration) DynamicPropertyFactory.getbackingConfigurationSource(); configuration.addProperty("cse.loadbalance.test.transactionControl.policy","org.apache.servicecomb.loadbalance.filter.SimpleTransactionControlFilter"); configuration.addProperty("cse.loadbalance.test.transactionControl.options.tag0","value0"); configuration.addProperty("cse.loadbalance.test.isolation.enabled","true"); configuration.addProperty("cse.loadbalance.serverListFilters","a"); configuration.addProperty("cse.loadbalance.serverListFilter.a.className","org.apache.servicecomb.loadbalance.MyServerListFilterExt"); }
@Before public void setUp() throws Exception { IsolationServerListFilter = new IsolationServerListFilter(); loadBalancerStats = new LoadBalancerStats("loadBalancer"); AbstractConfiguration configuration = (AbstractConfiguration) DynamicPropertyFactory.getbackingConfigurationSource(); configuration.clearProperty("cse.loadbalance.isolation.enabled"); configuration.addProperty("cse.loadbalance.isolation.enabled","true"); configuration.clearProperty("cse.loadbalance.isolation.enableRequestThreshold"); configuration.addProperty("cse.loadbalance.isolation.enableRequestThreshold","3"); }
@After public void tearDown() throws Exception { IsolationServerListFilter = null; loadBalancerStats = null; AbstractConfiguration configuration = (AbstractConfiguration) DynamicPropertyFactory.getbackingConfigurationSource(); configuration.clearProperty("cse.loadbalance.isolation.continuousFailureThreshold"); }
@Test public void testGetFilteredlistofServersOnContinuousFailureReachesThreshold() { ((AbstractConfiguration) DynamicPropertyFactory.getbackingConfigurationSource()) .addProperty("cse.loadbalance.isolation.continuousFailureThreshold","3"); Invocation invocation = Mockito.mock(Invocation.class); CseServer testServer = Mockito.mock(CseServer.class); Mockito.when(invocation.getMicroserviceName()).thenReturn("microserviceName"); Mockito.when(testServer.getCountinuousFailureCount()).thenReturn(3); Mockito.when(testServer.getLastVisitTime()).thenReturn(System.currentTimeMillis()); for (int i = 0; i < 3; ++i) { loadBalancerStats.incrementNumRequests(testServer); } List<Server> serverList = new ArrayList<>(); serverList.add(testServer); IsolationServerListFilter.setLoadBalancerStats(loadBalancerStats); IsolationServerListFilter.setInvocation(invocation); List<Server> returnedServerList = IsolationServerListFilter.getFilteredlistofServers(serverList); Assert.assertEquals(0,returnedServerList.size()); }
@Test public void testGetFilteredlistofServersOnContinuousFailureIsBelowThreshold() { ((AbstractConfiguration) DynamicPropertyFactory.getbackingConfigurationSource()) .addProperty("cse.loadbalance.isolation.continuousFailureThreshold","3"); Invocation invocation = Mockito.mock(Invocation.class); CseServer testServer = Mockito.mock(CseServer.class); Mockito.when(invocation.getMicroserviceName()).thenReturn("microserviceName"); Mockito.when(testServer.getCountinuousFailureCount()).thenReturn(2); Mockito.when(testServer.getLastVisitTime()).thenReturn(System.currentTimeMillis()); for (int i = 0; i < 3; ++i) { loadBalancerStats.incrementNumRequests(testServer); } List<Server> serverList = new ArrayList<>(); serverList.add(testServer); IsolationServerListFilter.setLoadBalancerStats(loadBalancerStats); IsolationServerListFilter.setInvocation(invocation); List<Server> returnedServerList = IsolationServerListFilter.getFilteredlistofServers(serverList); Assert.assertEquals(1,returnedServerList.size()); }
@BeforeClass public static void beforeCls() { ConfigUtil.installDynamicConfig(); AbstractConfiguration configuration = (AbstractConfiguration) DynamicPropertyFactory.getbackingConfigurationSource(); configuration.addProperty(REQUEST_TIMEOUT_KEY,2000); }
@Override public void init(AbstractConfiguration config,ApplicationListenerFactory factory) { init(config); logger.trace("Initializing Kafka consumer ..."); // consumer config Properties props = new Properties(); props.put("bootstrap.servers",config.getString("bootstrap.servers")); props.put("group.id",config.getString("group.id")); props.put("enable.auto.commit","true"); props.put("key.serializer",StringSerializer.class.getName()); props.put("value.serializer",InternalMessageSerializer.class.getName()); // consumer this.consumer = new KafkaConsumer<>(props); // consumer worker this.worker = new KafkaApplicationWorker(this.consumer,APPLICATION_TOPIC,factory.newListener()); this.executor.submit(this.worker); }
@Override public void init(AbstractConfiguration config,String brokerId,brokerListenerFactory factory) { init(config); broKER_TOPIC = broKER_TOPIC_PREFIX + "." + brokerId; logger.trace("Initializing Kafka consumer ..."); // consumer config Properties props = new Properties(); props.put("bootstrap.servers",UUIDs.shortUuid()); props.put("enable.auto.commit",InternalMessageSerializer.class.getName()); // consumer this.consumer = new KafkaConsumer<>(props); // consumer worker this.worker = new KafkabrokerWorker(this.consumer,broKER_TOPIC,factory.newListener()); this.executor.submit(this.worker); }
protected void init(AbstractConfiguration config) { broKER_TOPIC_PREFIX = config.getString("communicator.broker.topic"); APPLICATION_TOPIC = config.getString("communicator.application.topic"); logger.trace("Initializing Kafka producer ..."); // producer config Properties props = new Properties(); props.put("bootstrap.servers",config.getString("bootstrap.servers")); props.put("acks",config.getString("acks")); props.put("key.serializer",InternalMessageSerializer.class.getName()); // producer this.producer = new KafkaProducer<>(props); // consumer executor this.executor = Executors.newSingleThreadExecutor(); }
@Override public void init(AbstractConfiguration config) { if (!config.getString("redis.type").equals("single")) { throw new IllegalStateException("RedisSyncSingleStorage class can only be used with single redis setup,but redis.type value is " + config.getString("redis.type")); } List<String> address = parseRedisAddress(config.getString("redis.address"),6379); int databaseNumber = config.getInt("redis.database",0); String password = StringUtils.isNotEmpty(config.getString("redis.password")) ? config.getString("redis.password") + "@" : ""; // lettuce RedisURI lettuceURI = RedisURI.create("redis://" + password + address.get(0) + "/" + databaseNumber); this.lettuce = RedisClient.create(lettuceURI); this.lettuceConn = this.lettuce.connect(); // redisson Config redissonConfig = new Config(); redissonConfig.useSingleServer() .setAddress(address.get(0)) .setDatabase(databaseNumber) .setPassword(StringUtils.isNotEmpty(password) ? password : null); this.redisson = Redisson.create(redissonConfig); // params initParams(config); }
@Override public void init(AbstractConfiguration config,String serverId) { try { ConnectionFactory cf = new ConnectionFactory(); cf.setUsername(config.getString("rabbitmq.userName",ConnectionFactory.DEFAULT_USER)); cf.setPassword(config.getString("rabbitmq.password",ConnectionFactory.DEFAULT_PASS)); cf.setVirtualHost(config.getString("rabbitmq.virtualHost",ConnectionFactory.DEFAULT_VHOST)); cf.setAutomaticRecoveryEnabled(true); cf.setExceptionHandler(new RabbitMQExceptionHandler()); this.conn = cf.newConnection(Address.parseAddresses(config.getString("rabbitmq.addresses"))); this.channel = conn.createChannel(); logger.trace("Initializing RabbitMQ broker resources ..."); broKER_TOPIC_PREFIX = config.getString("communicator.broker.topic"); logger.trace("Initializing RabbitMQ application resources ..."); APPLICATION_TOPIC = config.getString("communicator.application.topic"); this.channel.exchangeDeclare(APPLICATION_TOPIC,"topic",true); } catch (IOException | TimeoutException e) { logger.error("Failed to connect to RabbitMQ servers",e); throw new IllegalStateException("Init RabbitMQ communicator Failed"); } }
/** * Attempts to acquire the Vault URL from Archaius. * * @return Vault URL */ @Nullable @Override public String resolve() { final AbstractConfiguration configuration = ConfigurationManager.getConfigInstance(); final String envUrl = configuration.getString(CERBERUS_ADDR_ENV_PROPERTY); final String sysUrl = configuration.getString(CERBERUS_ADDR_SYS_PROPERTY); if (StringUtils.isNotBlank(envUrl) && HttpUrl.parse(envUrl) != null) { return envUrl; } else if (StringUtils.isNotBlank(sysUrl) && HttpUrl.parse(sysUrl) != null) { return sysUrl; } logger.warn("Unable to resolve the Cerberus URL."); return null; }
@Override public Config createConfig(String name) { if (CONfig != null) { return CONfig; } synchronized (ArchaiusBaseFactory.class) { if (CONfig == null) { AbstractConfiguration configuration = getConfiguration(); ConfigurationManager.install(configuration); CONfig = new ArchaiusWrapper(configuration); ConfigFactory.setContext(CONfig); configuration.addConfigurationListener(event -> { if (!event.isBeforeUpdate()) { CONfig.fire(event.getPropertyName()); } }); } } return CONfig; }
@Override public void init(AbstractConfiguration config) { if (!config.getString("redis.type").equals("single")) { throw new IllegalStateException("RedisSyncSingleStorageImpl class can only be used with single redis setup,0); String password = StringUtils.isNotEmpty(config.getString("redis.password")) ? config.getString("redis.password") + "@" : ""; // lettuce RedisURI lettuceURI = RedisURI.create("redis://" + password + address.get(0) + "/" + databaseNumber); this.lettuce = RedisClient.create(lettuceURI); this.lettuceConn = this.lettuce.connect(); // params initParams(config); }
@Override public void init(AbstractConfiguration config) { if (!config.getString("redis.type").equals("sentinel")) { throw new IllegalStateException("RedisSyncSingleStorageImpl class can only be used with sentinel redis setup,26379); int databaseNumber = config.getInt("redis.database",0); String password = StringUtils.isNotEmpty(config.getString("redis.password")) ? config.getString("redis.password") + "@" : ""; String masterId = config.getString("redis.master"); // lettuce RedisURI lettuceURI = RedisURI.create("redis-sentinel://" + password + String.join(",",address) + "/" + databaseNumber + "#" + masterId); this.lettuceSentinel = RedisClient.create(lettuceURI); this.lettuceSentinelConn = MasterSlave.connect(this.lettuceSentinel,new Utf8StringCodec(),lettuceURI); this.lettuceSentinelConn.setReadFrom(ReadFrom.valueOf(config.getString("redis.read"))); // params initParams(config); }
@Override public void init(AbstractConfiguration config) { if (!config.getString("redis.type").equals("master_slave")) { throw new IllegalStateException("RedisSyncSingleStorageImpl class can only be used with master slave redis setup,0); String password = StringUtils.isNotEmpty(config.getString("redis.password")) ? config.getString("redis.password") + "@" : ""; // lettuce RedisURI lettuceURI = RedisURI.create("redis://" + password + address.get(0) + "/" + databaseNumber); this.lettuceMasterSlave = RedisClient.create(lettuceURI); this.lettuceMasterSlaveConn = MasterSlave.connect(this.lettuceMasterSlave,lettuceURI); this.lettuceMasterSlaveConn.setReadFrom(ReadFrom.valueOf(config.getString("redis.read"))); // params initParams(config); }
/** Create a new instance. */ @Inject Plugin(Registry registry) throws IOException { AbstractConfiguration config = ConfigurationManager.getConfigInstance(); final boolean enabled = config.getBoolean(ENABLED_PROP,true); if (enabled) { ConfigurationManager.loadPropertiesFromresources(CONfig_FILE); if (config.getBoolean("spectator.gc.loggingEnabled")) { GC_LOGGER.start(null); LOGGER.info("gc logging started"); } else { LOGGER.info("gc logging is not enabled"); } Jmx.registerStandardMXBeans(registry); } else { LOGGER.debug("plugin not enabled,set " + ENABLED_PROP + "=true to enable"); } }
@Override protected void doGet(HttpServletRequest req,HttpServletResponse resp) throws servletexception,IOException { // get list of properties TreeSet<String> properties = new TreeSet<String>(); AbstractConfiguration config = ConfigurationManager.getConfigInstance(); Iterator<String> keys = config.getKeys(); while (keys.hasNext()) { String key = keys.next(); Object value = config.getProperty(key); if ("aws.accessId".equals(key) || "aws.secretKey".equals(key) || "experiments-service.secret".equals(key) || "java.class.path".equals(key) || key.contains("framework.securityDeFinition") || key.contains("password") || key.contains("secret")) { value = "*****"; } properties.add(key + "=" + value.toString()); } // write them out in sorted order for (String line : properties) { resp.getWriter().append(line).println(); } }
@Override public void onApplicationEvent(ContextRefreshedEvent event) { logger.debug("Received ContextRefreshedEvent {}",event); if (event.getSource().equals(getBootstrapApplicationContext())) { //the root context is fully started appMetadata = bootstrapApplicationContext.getBean(AppMetadata.class); configuration = bootstrapApplicationContext.getBean(AbstractConfiguration.class); configurationProvider = bootstrapApplicationContext.getBean(ConfigurationProvider.class); logger.debug("Root context started"); initClientApplication(); return; } if (event.getSource() instanceof ApplicationContext && ((ApplicationContext) event.getSource()).getId().equals(appMetadata.getName())) { //the child context is fully started this.applicationContext = (AbstractApplicationContext) event.getSource(); logger.debug("Child context started"); } state.compareAndSet(State.STARTING,State.RUNNING); }
@Bean @SuppressWarnings("resource") public AbstractConfiguration applicationConfiguration() throws ClassNotFoundException { AppMetadata appMetadata = appMetadata(); ServerInstanceContext serverInstanceContext = serverInstanceContext(); if(appEnvironment == null && serverInstanceContext != null){ appEnvironment = serverInstanceContext.getEnvironment(); } ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(appMetadata.getName(),appEnvironment,addSystemConfigs,reflections()); configurationBuilder.withConfigurationProvider(configurationProvider()); configurationBuilder.withServerInstanceContext(serverInstanceContext()); configurationBuilder.withApplicationProperties(appMetadata.getPropertiesResourceLocation()); configurationBuilder.withScanModuleConfigurations(scanModuleConfigurations); configurationBuilder.withAppVersion(appMetadata.getDeclaringClass().getPackage().getImplementationVersion()); AbstractConfiguration configuration = configurationBuilder.build(); if(serverInstanceContext != null){ serverInstanceContext.setAppName(appMetadata.getName()); serverInstanceContext.setVersion(configuration.getString(BootstrapConfigKeys.APP_VERSION_KEY.getPropertyName())); } return configuration; }
@Override public void onApplicationEvent(EnvironmentChangeEvent event) { AbstractConfiguration manager = ConfigurationManager.getConfigInstance(); for (String key : event.getKeys()) { for (ConfigurationListener listener : manager .getConfigurationListeners()) { Object source = event.getSource(); // Todo: Handle add vs set vs delete? int type = AbstractConfiguration.EVENT_SET_PROPERTY; String value = this.env.getProperty(key); boolean beforeUpdate = false; listener.configurationChanged(new ConfigurationEvent(source,type,key,value,beforeUpdate)); } } }
private static void addArchaiusConfiguration(ConcurrentCompositeConfiguration config) { if (ConfigurationManager.isConfigurationInstalled()) { AbstractConfiguration installedConfiguration = ConfigurationManager .getConfigInstance(); if (installedConfiguration instanceof ConcurrentCompositeConfiguration) { ConcurrentCompositeConfiguration configInstance = (ConcurrentCompositeConfiguration) installedConfiguration; configInstance.addConfiguration(config); } else { installedConfiguration.append(config); if (!(installedConfiguration instanceof AggregatedConfiguration)) { log.warn( "Appending a configuration to an existing non-aggregated installed configuration will have no effect"); } } } else { ConfigurationManager.install(config); } }
@Test public void testSunnyDayNoClientAuth() throws Exception{ AbstractConfiguration cm = ConfigurationManager.getConfigInstance(); String name = "GetPostSecureTest" + ".testSunnyDayNoClientAuth"; String configPrefix = name + "." + "ribbon"; cm.setProperty(configPrefix + "." + CommonClientConfigKey.IsSecure,"true"); cm.setProperty(configPrefix + "." + CommonClientConfigKey.SecurePort,Integer.toString(PORT2)); cm.setProperty(configPrefix + "." + CommonClientConfigKey.IsHostnameValidationrequired,"false"); cm.setProperty(configPrefix + "." + CommonClientConfigKey.TrustStore,FILE_TS2.getAbsolutePath()); cm.setProperty(configPrefix + "." + CommonClientConfigKey.TrustStorePassword,PASSWORD); RestClient rc = (RestClient) ClientFactory.getNamedClient(name); testServer2.accept(); URI getUri = new URI(SERVICE_URI2 + "test/"); HttpRequest request = HttpRequest.newBuilder().uri(getUri).queryParams("name","test").build(); HttpResponse response = rc.execute(request); assertEquals(200,response.getStatus()); }
@Before public void setUp() { AbstractConfiguration.setDefaultListDelimiter(','); clearTestSystemProperties(); this.configurationHelper = new ConfigurationHelper(); this.test1Properties = new HashMap<String,String>() {{ this.put("a.b.c","efgh"); this.put("a.b.d","1234"); }}; this.test3Properties = new HashMap<String,"jklm"); this.put("e.f.h","90123"); // The value in the file is "foo,bar" but AbstractConfiguration.getString(key) only returns // the first item in a collection. this.put("i.j.k","foo"); }}; }
private void invokeListeners() { if (m_configurationListeners != null) { try { ConfigurationEvent event = new ConfigurationEvent(this,AbstractConfiguration.EVENT_SET_PROPERTY,null,this,false); for (ConfigurationListener listener:m_configurationListeners) { listener.configurationChanged(event); } } catch (Exception e) { throw new RuntimeException(e); } } }
public static AbstractConfiguration convertEnvVariable(AbstractConfiguration source) { Iterator<String> keys = source.getKeys(); while (keys.hasNext()) { String key = keys.next(); String[] separatedKey = key.split(CONfig_KEY_SPLITER); if (separatedKey.length == 1) { continue; } String newKey = String.join(".",separatedKey); source.addProperty(newKey,source.getProperty(key)); } return source; }
private static void duplicateServiceCombConfigToCse(AbstractConfiguration source) { Iterator<String> keys = source.getKeys(); while (keys.hasNext()) { String key = keys.next(); if (!key.startsWith(CONfig_SERVICECOMB_PREFIX)) { continue; } String cseKey = CONfig_CSE_PREFIX + key.substring(key.indexOf(".") + 1); source.addProperty(cseKey,source.getProperty(key)); } }
private static void duplicateServiceCombConfigToCse(ConcurrentCompositeConfiguration compositeConfiguration,AbstractConfiguration source,String sourceName) { duplicateServiceCombConfigToCse(source); compositeConfiguration.addConfiguration(source,sourceName); }
public static void installDynamicConfig() { if (ConfigurationManager.isConfigurationInstalled()) { LOGGER.warn("Configuration installed by others,will ignore this configuration."); return; } AbstractConfiguration dynamicConfig = ConfigUtil.createDynamicConfig(); ConfigurationManager.install(dynamicConfig); }
@Override protected Properties mergeProperties() throws IOException { Properties properties = super.mergeProperties(); AbstractConfiguration config = ConfigurationManager.getConfigInstance(); Iterator<String> iter = config.getKeys(); while (iter.hasNext()) { String key = iter.next(); Object value = config.getProperty(key); properties.put(key,value); } return properties; }
@Test public void testCreateDynamicConfigHasConfigCenter( @Mocked ConfigCenterConfigurationSource configCenterConfigurationSource) { AbstractConfiguration dynamicConfig = ConfigUtil.createDynamicConfig(); Assert.assertEquals(DynamicWatchedConfiguration.class,((ConcurrentCompositeConfiguration) dynamicConfig).getConfiguration(0).getClass()); }
@Test public void duplicateServiceCombConfigToCseListValue() throws Exception { List<String> list = Arrays.asList("a","b"); AbstractConfiguration config = new DynamicConfiguration(); config.addProperty("servicecomb.list",list); Deencapsulation.invoke(ConfigUtil.class,"duplicateServiceCombConfigToCse",config); Object result = config.getProperty("cse.list"); assertthat(result,instanceOf(List.class)); assertthat(result,equalTo(list)); }
@Test public void testConvertEnvVariable() { String someProperty = "cse_service_registry_address"; AbstractConfiguration config = new DynamicConfiguration(); config.addProperty(someProperty,"testing"); AbstractConfiguration result = ConfigUtil.convertEnvVariable(config); assertthat(result.getString("cse.service.registry.address"),equalTo("testing")); assertthat(result.getString("cse_service_registry_address"),equalTo("testing")); }
@Test public void testCreateMicroserviceInstanceFromFile() { AbstractConfiguration config = ConfigUtil.createDynamicConfig(); ConcurrentCompositeConfiguration configuration = new ConcurrentCompositeConfiguration(); configuration.addConfiguration(config); ConfigurationManager.install(configuration); MicroserviceInstance instance = MicroserviceInstance.createFromDeFinition(config); Assert.assertEquals(instance.getDataCenterInfo().getName(),"myDC"); Assert.assertEquals(instance.getDataCenterInfo().getRegion(),"my-Region"); Assert.assertEquals(instance.getDataCenterInfo().getAvailableZone(),"my-Zone"); }
@BeforeClass public static void initSetup() throws Exception { AbstractConfiguration dynamicConfig = ConfigUtil.createDynamicConfig(); ConcurrentCompositeConfiguration configuration = new ConcurrentCompositeConfiguration(); configuration.addConfiguration(dynamicConfig); configuration.addConfiguration(inMemoryConfig); ConfigurationManager.install(configuration); }
@BeforeClass public static void beforeCls() { AbstractConfiguration configuration = new BaseConfiguration(); configuration.addProperty("cse.loadbalance.test.flowsplitFilter.policy","org.apache.servicecomb.loadbalance.filter.SimpleFlowsplitFilter"); configuration.addProperty("cse.loadbalance.test.flowsplitFilter.options.tag0","value0"); }
@Override public void init(AbstractConfiguration config) { if (!config.getString("redis.type").equals("master_slave")) { throw new IllegalStateException("RedisSyncSingleStorage class can only be used with master slave redis setup,lettuceURI); this.lettuceMasterSlaveConn.setReadFrom(ReadFrom.valueOf(config.getString("redis.read"))); // redisson String masterNode = address.get(0); String[] slaveNodes = address.subList(1,address.size()).toArray(new String[address.size() - 1]); Config redissonConfig = new Config(); redissonConfig.useMasterSlaveServers() .setMasteraddress(masterNode) .setLoadBalancer(new RoundRobinLoadBalancer()) .addSlaveAddress(slaveNodes) .setReadMode(ReadMode.MASTER) .setDatabase(databaseNumber) .setPassword(StringUtils.isNotEmpty(password) ? password : null); this.redisson = Redisson.create(redissonConfig); // params initParams(config); }
@Override public void init(AbstractConfiguration config) { if (!config.getString("redis.type").equals("cluster")) { throw new IllegalStateException("RedisSyncSingleStorage class can only be used with cluster redis setup,0); String password = StringUtils.isNotEmpty(config.getString("redis.password")) ? config.getString("redis.password") + "@" : ""; // lettuce RedisURI lettuceURI = RedisURI.create("redis://" + password + address.get(0) + "/" + databaseNumber); this.lettuceCluster = RedisClusterClient.create(lettuceURI); this.lettuceCluster.setoptions(new ClusterClientOptions.Builder() .refreshClusterView(true) .refreshPeriod(1,TimeUnit.MINUTES) .build()); this.lettuceClusterConn = this.lettuceCluster.connect(); this.lettuceClusterConn.setReadFrom(ReadFrom.valueOf(config.getString("redis.read"))); // redisson Config redissonConfig = new Config(); redissonConfig.useClusterServers() .setScanInterval(60000) .addNodeAddress(address.toArray(new String[address.size()])) .setReadMode(ReadMode.MASTER) .setPassword(StringUtils.isNotEmpty(password) ? password : null); this.redisson = Redisson.create(redissonConfig); // params initParams(config); }
org.apache.commons.configuration.AbstractFileConfiguration的实例源码
@Override public void configurationChanged(ConfigurationEvent event) { if (event.isBeforeUpdate()) { return; } logger.log(OpLevel.DEBUG,"configurationChanged: type={0},{1}:{2}",event.getType(),event.getPropertyName(),event.getPropertyValue()); switch (event.getType()) { case AbstractConfiguration.EVENT_ADD_PROPERTY: repListener.repositoryChanged(new TokenRepositoryEvent(event.getSource(),TokenRepository.EVENT_ADD_KEY,event.getPropertyValue(),null)); break; case AbstractConfiguration.EVENT_SET_PROPERTY: repListener.repositoryChanged(new TokenRepositoryEvent(event.getSource(),TokenRepository.EVENT_SET_KEY,null)); break; case AbstractConfiguration.EVENT_CLEAR_PROPERTY: repListener.repositoryChanged(new TokenRepositoryEvent(event.getSource(),TokenRepository.EVENT_CLEAR_KEY,null)); break; case AbstractConfiguration.EVENT_CLEAR: repListener.repositoryChanged(new TokenRepositoryEvent(event.getSource(),TokenRepository.EVENT_CLEAR,null)); break; case AbstractFileConfiguration.EVENT_RELOAD: repListener.repositoryChanged(new TokenRepositoryEvent(event.getSource(),TokenRepository.EVENT_RELOAD,null)); break; } }
@Test(dataProvider = "overrides") public void testFindConfigFile(String override,String expected) throws Exception { SshdSettingsBuilder testBuilder = new SshdSettingsBuilder(); Configuration config = testBuilder.findPropertiesConfiguration(override); AbstractFileConfiguration fileConfiguration = (AbstractFileConfiguration) config; // we need to create expected from a new file. // because it's a complete filename. File expectedFile = new File(expected); String expectedpath = "file://" + expectedFile.getAbsolutePath(); Assert.assertEquals(fileConfiguration.getFileName(),expectedpath); }
public void configurationChanged(ConfigurationEvent event) { if (!event.isBeforeUpdate() && event.getType() == AbstractFileConfiguration.EVENT_RELOAD) { if (m_applicationContext instanceof AbstractRefreshableApplicationContext) { ((AbstractRefreshableApplicationContext)m_applicationContext).refresh(); } } }
今天关于Apacheconfiguration帮助 – 为什么不同的进程“在不同的时区”?和不同进程所执行的代码也不同的讲解已经结束,谢谢您的阅读,如果想了解更多关于Apache的Windows虚拟目录configuration帮助、configurationnginx使用相同的URI将不同的文件返回给不同的authentication用户、org.apache.commons.configuration.AbstractConfiguration的实例源码、org.apache.commons.configuration.AbstractFileConfiguration的实例源码的相关知识,请在本站搜索。
本文标签: