knightliao / disconf Goto Github PK
View Code? Open in Web Editor NEWDistributed Configuration Management Platform(分布式配置管理平台)
Home Page: http://disconf.readthedocs.io/
License: Apache License 2.0
Distributed Configuration Management Platform(分布式配置管理平台)
Home Page: http://disconf.readthedocs.io/
License: Apache License 2.0
查看浏览器信息显示 POST /api/account/singin : 404 not found
请问是什么原因?
还有如何开启调试?
hi,我按照disconf-web/README中的步骤部署。其中配置文件我是从disconf/disconf-web/src/main/resources目录下拷贝过来的。更改了其中jdbc-mysql.properties的jdbc.db_0.username、jdbc.db_0.password。redis-config.properties文件我没看明白,因为我司redis都不需要密码的,为了适配这个文件,我也在redis.conf中requirepass foobared。另外,没看懂redis.group1.client1.name和redis.group1.client2.name这个怎么设置?rabbit.properties中修改了username和password,使用的是如下root用户,这样配置是否有错?
zoo.properties没有修改。
P.S.上述所有基础服务我是部署在一台虚拟机上,不知这样配置是否有错?
然后用admin登陆网页,显示“服务器内部错误”。
新手提问,比较业余,求不喷^-^。谢谢各位技术大佬!
// 每3分钟执行一次自动化校验
@scheduled(fixedDelay = 3 * 60 * 1000)
@OverRide
public void myTest() {
LOG.info("task schedule just testing, every 1 min");
}
every 3 min!烦请作者修改一下。
另外有疑问此处的意图是什么??谢谢!!!
https://github.com/knightliao/disconf/wiki/Tutorial1
第一步:添加Disconf的支持
在applicationContext.xml里添加Bean定义:
destory vs destroy
请作者修改一下吧。
env是定义在 disconf.properties的, 你们是怎么实现一个应用包多处部署的(测试环境用qa, 线上环境用online),是在启动脚本中处理的吗?或者是别的方式? @knightliao
如上
在AppController 的方法 JsonObjectBase create(@Valid AppNewForm appNewForm) 中 发现 从web前端传过来的appNewForm 为空对象。 还需要修改其他的 配置信息吗?
Hi,我认为指定了PO的DB字段就限制了数据库名字,使用上不太方便。我在部署第一套环境的时候已经创建了数据库(名称不是disconf),这会导致功能不可用。可以考虑在jdbc-mysql.properties中直接指定url就行,这样可以进一步放宽使用限制。另外,disconf缺省使用的是mysql的connector,这个遵循的开源协议时GPL,建议改成mariadb,这个遵循的Apache License 2.0开源协议,目前使用mariadb的用户应该更多。
com.baidu.disconf.core.common.restful.impl.RestfulMgrImpl
private File retryDownload(String fileName, RemoteUrl remoteUrl, int retryTimes, int retrySleepSeconds)
throws Exception {
String tmpFileDir = "./disconf/download"; //为什么要硬编码……………… 有没有考虑到可能有问题
String tmpFilePath = OsUtil.pathJoin(tmpFileDir, fileName);
String tmpFilePathUnique = MyStringUtils.getRandomName(tmpFilePath);
File tmpFilePathUniqueFile = new File(tmpFilePathUnique);
retry4ConfDownload(remoteUrl, tmpFilePathUniqueFile, retryTimes, retrySleepSeconds);
return tmpFilePathUniqueFile;
}
打算像Tutorial 10 中介绍的实现一个配置更新下载器agent,但是所有配置都只能下载到disconf.user_define_download_dir指定的目录下么,如果我想不同的配置下载到不同的目录这个可以实现么?
项目用的spring 4.1.2版本,发现按照xml reload配置,无法reload,重启后生效。
把spring版本下降至和demo中的版本一样,3.1.2,可以reload。
在demo环境中,修改了spring版本至4.1.2,问题同样重现。
还未找出原因,能否看下是什么问题?希望能支持高版本
在springboot项目中用.ym类型的配置文件,但是这个还不支持
还有能不能加个用户管理,app管理的功能
比如一个 http://127.0.0.1 同时路由到2个tomcat的disconf实例,在disconf-web成功登录后,再刷新 api/account/session 马上就失效了(单实例无影响)
nginx配置类似于
upstream disconf {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
location / {
root /data/tomcat/webapps/disconf-war/html;
if ($query_string) {
expires max;
}
}
location ~ ^/(api|export) {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://disconf;
}
}
Hi,手动创建了数据表role/role_resource并增加了记录进行关联,METHOD_MASK改为0123,记录如下:
0 0 /api/app 0123 2015-09-21 16:18:10
发现代码中下面这行:
public static final char METHOD_IS_ACCESSIBLE = '1';
只允许访问方法PUT,这是什么缘故?
看代码,上述配置在解析时只会把PUT方法加入缓存,当前台视图创建APP的时候发现是POST方法,无法通过检查,莫非这是disconf有意为之?
目前sql脚本没有自动生成role_resource表,手动创建该表以后提示没有权限访问资源。目前初步分析是这样,还没有继续往下分析。以下是请求log:
ca53fa30-0ed0-4632-a858-8fd11a41dd9a 2015-09-21 16:01:48,684 [http-bio-8080-exec-2] INFO com.baidu.dsp.common.interceptor.login.LoginInterceptor - /api/app
ca53fa30-0ed0-4632-a858-8fd11a41dd9a 2015-09-21 16:01:48,688 [http-bio-8080-exec-2] INFO com.baidu.disconf.web.service.roleres.service.impl.RoleResourceMgrImpl - Querying role_resource table to get all...
ca53fa30-0ed0-4632-a858-8fd11a41dd9a 2015-09-21 16:01:48,688 [http-bio-8080-exec-2] INFO com.baidu.dsp.common.dao.AbstractDao - ----null disconf.role_resource
ca53fa30-0ed0-4632-a858-8fd11a41dd9a 2015-09-21 16:01:48,688 [http-bio-8080-exec-2] INFO com.baidu.dsp.common.dao.AbstractDao - select method_mask,role_id,update_time,role_res_id,url_description,url_pattern from disconf.role_resource []
ca53fa30-0ed0-4632-a858-8fd11a41dd9a 2015-09-21 16:01:48,701 [http-bio-8080-exec-2] WARN com.baidu.dsp.common.handler.MyExceptionHandler - /api/app ExceptionHandler FOUND. com.baidu.dsp.common.exception.AccessDeniedException null
ca53fa30-0ed0-4632-a858-8fd11a41dd9a 2015-09-21 16:01:48,702 [http-bio-8080-exec-2] WARN com.baidu.dsp.common.handler.MyExceptionHandler - details: Access Denied: /api/app/, method:POST, UserId:1, RoleId:1
disconf-web 可以配置不使用redis? 因为目前不想增加复杂度, 是否有配置开关?
如题,我们环境中,1个tomcat下面有多个war包,考虑在tomcat启动参数中配置env,下面各个war拉取该war中的配置。这样代码和配置分开以后,qa出来的代码可以直接进prod,请问现在是否已经支持,如何配置?
当有很多app时,app的下拉列表居然显示不全,请前端攻城师帮忙修复下吧,谢谢了!
示例项目为 dis ,示例资源文件 datasource.properties
测试了tomcat8,
如果是 /dis 或dis.war部署都不能下载资源文件
jetty9.2 /dis 可以正常运行项目 ,dis.war方法启动无法下载资源文件
开源的Spring Cloud Config已经支持将配置文件持久化到GIT服务器了,这个对于配置文件的管理确实是个优势,disconf是否有考虑将配置文件托管在Git服务器上呢?
当添加配置的value有字符"/"
disconf-web 无法正常显示
|----/disconf/redis-demo_1.0.0_local
|----file
|----redis.properties
|----slimina_0_dab369bc-7834-4ad4-8c3c-8004dddefd37 {"redis.host":"192.168.1.90","redis.port":6379}
|----item
|----user.name
|----slimina_0_dab369bc-7834-4ad4-8c3c-8004dddefd37 tomcater\
欢迎大家把Disconf使用过程碰到的问题通过新建ISSUE的方式记录下来,方便我们进行问题整理,也方便后来的人问题定位及解决。
再次感谢大家的批评与指正。
8b9b7d4b-3f1b-4f3c-b51e-74b40689c23d 2015-06-04 16:20:33,320 [http-nio-8080-exec-7] INFO com.baidu.dsp.common.dao.AbstractDao - select ownapps,role_id,token,name,user_id,password from disconf.user where name=? limit ?, ? [admin, 0, 1]
但是在user表中没看到role_id这个字段
CREATE TABLE `user` (
`user_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`name` VARCHAR(50) NOT NULL COMMENT '姓名',
`password` VARCHAR(255) NOT NULL COMMENT '密码',
`token` VARCHAR(255) NOT NULL COMMENT 'token',
PRIMARY KEY (`user_id`)
)
public class JsonObject extends JsonObjectBase中
private Map<String, Object> result = new HashMap<String, Object>();
没有对应的getter/setter方法,所以在序列化的时候无法序列化,导致result数据没有成功返回,前端异常。
zoo.properties 里面的两个属性什么意思,应该如何配置。
zookeeper如何配置启动,能给个例子吗?
现实使用中,同1个产品会有很多模块,然后同1个环境中,这些模块可能都有一些公共的配置(譬如数据库配置)又有模块自己本身的配置;想问一下,这种情况下,有没有办法把公共的配置抽取开来?然后支持多个disconf.properties或者说配置文件里面支持配置多个env或者版本之类;
第一次使用disconf,看了官方文档后,下载版本2.6.23研究,发现web端更改配置后,client端的自己做的例子的回调方法就是无法触发,然后下载了2.6.21,client端的回调方法就正常触发了.然后看到版本2.6.22说修复了个bug,所以我又下载了版本2.6.22,测试时发现client端的回调方法又不触发了。就2.6.21正常。。。对2.6.23代码稍微跟踪了下,web更改配置后,client端里的DisconfCoreProcessUtils类callOneConf方法里的List iDisconfUpdates = disconfStoreProcessor.getUpdateCallbackList(key)时,是空的,所以回调类里的reload没触发。但是2.6.21却可以正常。。。;请问,这是怎么回事,是不是版本2.6.22修复bug或删除多余代码引起的,导致IDisconfUpdate的实现类没被扫描到啊?
我在项目中配置了enable.remote.conf=false
。然后将所有的配置文件放在classpath下面,确认文件都是齐全的。
项目中配置了两种读取方式,一种是分布式annotation托管,一种是静态托管。配置如下:
<context:component-scan base-package="com.xxx.product"/>
<aop:aspectj-autoproxy proxy-target-class="true"/>
<!-- 使用disconf必须添加以下配置 -->
<bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"
destroy-method="destroy">
<property name="scanPackage" value="com.xxx.product"/>
</bean>
<bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"
init-method="init" destroy-method="destroy">
</bean>
<bean id="configproperties_no_reloadable_disconf"
class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:/xxx.properties</value>
...
</list>
</property>
</bean>
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="false"/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="propertiesArray">
<list>
<ref bean="configproperties_no_reloadable_disconf"/>
</list>
</property>
</bean>
通过debug信息,并追踪了disconf的初始化过程,发现第一次扫描已经根据DisClientConfig.getInstance().ENABLE_DISCONF
读取到并加载了正确的本地配置。
静态托管的文件都没有问题,应用可以读取到本地配置文件。
annotation托管的配置实例Bean的配置项属性值运行中都为null。
没找到原因。这是个bug吗?
配置文件包括:
- jdbc-mysql.properties (数据库配置)
- redis-config.properties (Redis配置)
- zoo.properties (Zookeeper配置)
- application.properties (应用配置)
注意,记得执行将application-demo.properties复制成application.properties:
cp application-demo.properties application.properties
问下这里能否给出样例,主要是 application.properties,而且没找到 application-demo.properties。
谢谢。
update:
找到了,不好意思。
如题,是3rd的包吗?google都没搜到。还有一些其他包比较难找。
public void secondScan() throws Exception {
// 不开启disconf则不需要处理回调
if (!DisClientConfig.getInstance().ENABLE_DISCONF) {
if (scanModel == null) {
synchronized(scanModel) {
// 下载模块必须先初始化
if (scanModel == null) {
throw new Exception("You should run first scan before second Scan");
}
}
}
// 将回调函数实例化并写入仓库
ScanDynamicStoreAdapter.scanUpdateCallbacks(scanModel);
}
}
**if (!DisClientConfig.getInstance().ENABLE_DISCONF)**判断条件写反了......
目前,disconf启动的时候会把配置文件Copy一份到class path中,是否支持配置不Copy到class path中?
disconf.enable_local_download_dir_in_class_path 这个配置不能生效!
为了线上应用的安全性,数据库密码和其它配置的信息都是保密的,一般会把配置放在一个一般用户没有权限的目录下,而应用对一般有用是开放的,如果配置被copy到classpath下,安全性大大降低。
是否考虑支持该特性?从user_define_download_dir加载配置,而不是Copy到class path
因bean ReloadablePropertiesFactoryBean
有属性locations和 Spring中的**PropertyPlaceholderConfigurer
**属性有冲突,在启动的时候经常出现下面警告,如果出现警告连接不到web后台配置
WARN GenericTypeAwarePropertyDescriptor:116 - Invalid JavaBean property 'locations' being accessed! Ambiguous write methods found next to actually used [public void com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean.setLocations(java.util.List)]: [public void org.springframework.core.io.support.PropertiesLoaderSupport.setLocations(org.springframework.core.io.Resource[])
https://github.com/knightliao/disconf/wiki/%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E
中提到版本号要使用1_0_0_0的版本?请问使用1.0.0.0的格式是否可以? Demo试了一下是可以的, 是否会引起其他问题?
D:\software\apache-tomcat-7.0.61\bin\catalina.bat run
[2015-09-10 05:13:55,123] Artifact disconf-web:war exploded: Server is not connected. Deploy is not available.
Using CATALINA_BASE: "C:\Users\Ozz8.IntelliJIdea14\system\tomcat\Unnamed_disconf-base"
Using CATALINA_HOME: "D:\software\apache-tomcat-7.0.61"
Using CATALINA_TMPDIR: "D:\software\apache-tomcat-7.0.61\temp"
Using JRE_HOME: "C:\Program Files\Java\jdk1.7.0_67"
Using CLASSPATH: "D:\software\apache-tomcat-7.0.61\bin\bootstrap.jar;D:\software\apache-tomcat-7.0.61\bin\tomcat-juli.jar"
Connected to the target VM, address: '127.0.0.1:61149', transport: 'socket'
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server version: Apache Tomcat/7.0.61
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server built: Mar 27 2015 12:03:56 UTC
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server number: 7.0.61.0
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Name: Windows 8.1
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Version: 6.3
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Architecture: amd64
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Java Home: C:\Program Files\Java\jdk1.7.0_67\jre
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Version: 1.7.0_67-b01
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Vendor: Oracle Corporation
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_BASE: C:\Users\Ozz8.IntelliJIdea14\system\tomcat\Unnamed_disconf-base
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_HOME: D:\software\apache-tomcat-7.0.61
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:61149,suspend=y,server=n
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcom.sun.management.jmxremote=
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcom.sun.management.jmxremote.port=1099
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcom.sun.management.jmxremote.ssl=false
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcom.sun.management.jmxremote.authenticate=false
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.rmi.server.hostname=127.0.0.1
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.util.logging.config.file=C:\Users\Ozz8.IntelliJIdea14\system\tomcat\Unnamed_disconf-base\conf\logging.properties
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.endorsed.dirs=D:\software\apache-tomcat-7.0.61\endorsed
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.base=C:\Users\Ozz8.IntelliJIdea14\system\tomcat\Unnamed_disconf-base
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.home=D:\software\apache-tomcat-7.0.61
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.io.tmpdir=D:\software\apache-tomcat-7.0.61\temp
九月 10, 2015 5:13:56 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: Loaded APR based Apache Tomcat Native library 1.1.33 using APR version 1.5.1.
九月 10, 2015 5:13:56 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
九月 10, 2015 5:13:56 下午 org.apache.catalina.core.AprLifecycleListener initializeSSL
信息: OpenSSL successfully initialized (OpenSSL 1.0.1m 19 Mar 2015)
九月 10, 2015 5:13:56 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-apr-8080"]
九月 10, 2015 5:13:56 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["ajp-apr-8009"]
九月 10, 2015 5:13:56 下午 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1092 ms
九月 10, 2015 5:13:56 下午 org.apache.catalina.core.StandardService startInternal
信息: Starting service Catalina
九月 10, 2015 5:13:56 下午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/7.0.61
九月 10, 2015 5:13:57 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-apr-8080"]
九月 10, 2015 5:13:57 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-apr-8009"]
九月 10, 2015 5:13:57 下午 org.apache.catalina.startup.Catalina start
信息: Server startup in 35 ms
Connected to server
[2015-09-10 05:13:57,263] Artifact disconf-web:war exploded: Artifact is being deployed, please wait...
九月 10, 2015 5:13:58 下午 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(D:\codes\opensource\disconf\disconf-web\target\disconf-web\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 3.0, section 10.7.2. Offending class: javax/servlet/Servlet.class
九月 10, 2015 5:14:00 下午 org.apache.catalina.core.ApplicationContext log
信息: No Spring WebApplicationInitializer types detected on classpath
2015-09-10 17:14:02,037 [RMI TCP Connection(3)-127.0.0.1] INFO com.baidu.dsp.common.listener.StartupListener - Load StartupListener start...
2015-09-10 17:14:02,044 [RMI TCP Connection(3)-127.0.0.1] INFO com.baidu.dsp.common.listener.StartupListener - Load StartupListener end...
九月 10, 2015 5:14:02 下午 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
2015-09-10 17:14:02,046 [RMI TCP Connection(3)-127.0.0.1] INFO context.ContextLoader (ContextLoader.java:285) - Root WebApplicationContext: initialization started
2015-09-10 17:14:02,142 [RMI TCP Connection(3)-127.0.0.1] INFO support.XmlWebApplicationContext (AbstractApplicationContext.java:510) - Refreshing Root WebApplicationContext: startup date [Thu Sep 10 17:14:02 CST 2015]; root of context hierarchy
2015-09-10 17:14:02,181 [RMI TCP Connection(3)-127.0.0.1] INFO xml.XmlBeanDefinitionReader (XmlBeanDefinitionReader.java:317) - Loading XML bean definitions from URL [file:/D:/codes/opensource/disconf/disconf-web/target/disconf-web/WEB-INF/classes/applicationContext.xml]
九月 10, 2015 5:14:08 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory D:\software\apache-tomcat-7.0.61\webapps\manager
九月 10, 2015 5:14:08 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory D:\software\apache-tomcat-7.0.61\webapps\manager has finished in 95 ms
2015-09-10 17:14:08,756 [RMI TCP Connection(3)-127.0.0.1] ERROR context.ContextLoader (ContextLoader.java:331) - Context initialization failed
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from URL [file:/D:/codes/opensource/disconf/disconf-web/target/disconf-web/WEB-INF/classes/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/mvc/spring-mvc.xsd; lineNumber: 24; columnNumber: 20; cos-all-limited.1.2: An ''all'' model group must appear in a particle with '{'min occurs'}'='{'max occurs'}'=1, and that particle must be part of a pair which constitutes the '{'content type'}' of a complex type definition.
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at com.baidu.dsp.common.listener.ContextListener.contextInitialized(ContextListener.java:21)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1779)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
九月 10, 2015 5:14:08 下午 org.apache.catalina.core.StandardContext listenerStart
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
严重: Exception sending context initialized event to listener instance of class com.baidu.dsp.common.listener.ContextListener
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from URL [file:/D:/codes/opensource/disconf/disconf-web/target/disconf-web/WEB-INF/classes/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/mvc/spring-mvc.xsd; lineNumber: 24; columnNumber: 20; cos-all-limited.1.2: An ''all'' model group must appear in a particle with '{'min occurs'}'='{'max occurs'}'=1, and that particle must be part of a pair which constitutes the '{'content type'}' of a complex type definition.
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:537)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:452)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at com.baidu.dsp.common.listener.ContextListener.contextInitialized(ContextListener.java:21)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5016)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5528)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at java.lang.Thread.run(Thread.java:745)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
Caused by: org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/mvc/spring-mvc.xsd; lineNumber: 24; columnNumber: 20; cos-all-limited.1.2: An ''all'' model group must appear in a particle with '{'min occurs'}'='{'max occurs'}'=1, and that particle must be part of a pair which constitutes the '{'content type'}' of a complex type definition.
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1779)
at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:267)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:201)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
... 57 more
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.xml.sax.SAXParseException; systemId: http://www.springframework.org/schema/mvc/spring-mvc.xsd; lineNumber: 24; columnNumber: 20; cos-all-limited.1.2: An ''all'' model group must appear in a particle with '{'min occurs'}'='{'max occurs'}'=1, and that particle must be part of a pair which constitutes the '{'content type'}' of a complex type definition.
at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:267)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:201)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
... 57 more
九月 10, 2015 5:14:08 下午 org.apache.catalina.core.StandardContext startInternal
严重: Error listenerStart
九月 10, 2015 5:14:08 下午 org.apache.catalina.core.StandardContext startInternal
严重: Context [] startup failed due to previous errors
九月 10, 2015 5:14:08 下午 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2015-09-10 17:14:08,769 [RMI TCP Connection(3)-127.0.0.1] INFO support.XmlWebApplicationContext (AbstractApplicationContext.java:862) - Closing Root WebApplicationContext: startup date [Thu Sep 10 17:14:02 CST 2015]; root of context hierarchy
2015-09-10 17:14:08,781 [RMI TCP Connection(3)-127.0.0.1] WARN support.XmlWebApplicationContext (AbstractApplicationContext.java:872) - Exception thrown from ApplicationListener handling ContextClosedEvent
java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Thu Sep 10 17:14:02 CST 2015]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:344)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:331)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:869)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
at com.baidu.dsp.common.listener.ContextListener.contextDestroyed(ContextListener.java:16)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5063)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5723)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1779)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
2015-09-10 17:14:08,784 [RMI TCP Connection(3)-127.0.0.1] WARN support.XmlWebApplicationContext (AbstractApplicationContext.java:880) - Exception thrown from LifecycleProcessor on context close
java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Thu Sep 10 17:14:02 CST 2015]; root of context hierarchy
at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:357)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:877)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
at com.baidu.dsp.common.listener.ContextListener.contextDestroyed(ContextListener.java:16)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5063)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5723)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1779)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
九月 10, 2015 5:14:08 下午 org.apache.catalina.core.StandardContext listenerStop
严重: Exception sending context destroyed event to listener instance of class com.baidu.dsp.common.listener.ContextListener
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:170)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:908)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:884)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:836)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:579)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:115)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.baidu.dsp.common.listener.ContextListener.contextDestroyed(ContextListener.java:16)
at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:5063)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5723)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1779)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:618)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:565)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at java.lang.Thread.run(Thread.java:745)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:556)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:811)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:670)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[2015-09-10 05:14:08,828] Artifact disconf-web:war exploded: Error during artifact deployment. See server log for details.
配置文件内容传到服务器时会被转码成unicode,下载后使用disconf web包中的CodeUtil.unicodeToUtf8转会utf8,会碰到异常。
如:CHLOÉ会被转成CHLO���value> (Ov中有个特殊符号,贴不上来)
如: COMME DES GARÇONS 被转成COMME DES GAR�S(RS之间有特殊符号)
设置disconf.enable_local_download_dir_in_class_path=false之后, @DisconfFile(filename = "")如果不设置已copy2TargetDirPath,仍会从classpath下面读取 配置。然后找不到。注入不了值,获取不到配置。
PO定义:
@table(db = DB.DB_NAME, name = "user", keyColumn = Columns.USER_ID)
public class User extends BaseObject {
private static final long serialVersionUID = 1L;
// 唯一
@Column(value = Columns.NAME)
private String name;
// token
@Column(value = Columns.TOKEN)
private String token;
// 密码
@Column(value = Columns.PASSWORD)
private String password;
//
@Column(value = Columns.OWNAPPS)
private String ownApps;
/**
* 角色ID
*/
@Column(value = Columns.ROLE_ID)
private int roleId;
...
}
数据库:
CREATE TABLE user
(
user_id
BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
name
VARCHAR(50) NOT NULL COMMENT '姓名',
password
VARCHAR(255) NOT NULL COMMENT '密码',
token
VARCHAR(255) NOT NULL COMMENT 'token',
PRIMARY KEY (user_id
)
)
正在集成,想知道下同伴们的情况,碰到问题好探讨。
想统计一下使用情况,
另外,也可以说下,如何知道disconf,以及使用disconf的规模,时间长度
rt
比如提供DisconfClient.get(key)这种方法,在一些不使用spring托管的bean中将会非常实用。
问题1:RestfulMgrImpl
这里用静态变量没有看明白,因为ConfigLoaderUtils的CLASS_PATH是静态初始化的。类被载入的时候就有值了,因为getLocalDownloadFileInClasspath方法中用到。这里是通过什么原理判断这一次是使用classpath的呢?是不是应该用参数中的isTransfer2Classpath
呢?
问题2:
在每个获取资源的方法,都是直接取RemoteUrl#getUrls,然后遍历url,但是取到一个之后就直接return了
这里的url是同一个资源分布在不同的url上边吗?
Create a new Issue and describe the problem occurred.
问题如题,有什么好的解决方法吗?
在Spring中直接使用@Autowired Environment不能获取到disconf托管的配置
目前我是自己重写了Spring的PropertySourcesPlaceholderConfiguer,在加载disconf的配置时候注入Environment,不过这种方法也有缺陷,Environment的初始化在ApplicaitonEnvironmentPrepare的时候,早于Spring的Bean的初始化,这样会导致disconf的配置不能在Environment初始化的时候加载,一些依赖Environment的系统配置不能被加载,例如SpringBoot的server.port。
我的Spring版本是4.1.x,目前的解决方案是把Spring的application.properties放在本地,不使用discount托管!
跑demo的时候看见有个timer-0线程保持着,是disconf起的?
为减少POJO中少写Getter,Setter,框架使用Lombok库。开发时需要在IDE中配置Lombok插件。
参见:http://codepub.cn/2015/07/30/Lombok-development-guidelines/
比如tomcat的详细配置。6,7,8每个版本的配置都不太一样,能否说明是在哪个版本下。
比如文档中的 application.demo.properties这些配置文件样例模板在哪copy之类的。
按照部署文档折腾一上午啦。
在单元测试中, 你使用了wiremock建了个假服务器, 但是这个URL匹配是很死板的, 比如url/api/config/file?app=disconf_testcase&env=rd&type=0&key=confA.properties&version=1_0_0_0
, 有时候你的测试用例中发注的请求url跟上面不一样, 往往是query parameter的顺序不一样, 比如key=key在version=version的后面, 因此url导致不匹配, 假服务器不反回期望的请求.
stubFor(get(urlEqualTo(RemoteMockServer.ITEM_URL))
.willReturn(aResponse().withHeader("Content-Type", RemoteMockServer.CONTENT_TYPE).withStatus(200)
.withBody(GsonUtils.toJson(valueVo))));
长话短说, query parameter顺序不一样是因为遍历HashMap的顺序是随机的, 可能在你的环境中恰好这些单元测试都跑过了, 另一种环境就不行了. 我这里的症状是, 在Eclipse的JUnit跑没问题, mvn test 就不行了.
如果接受pull request的话, 我可以做些改动, 尽量减少源代码的改动的情况下解决这个单测的问题. 要动的地方只有RemoteMockServer.java
和BaseCoreTestCase.java
这两个类
首先,感谢disconf的各位大牛的无私奉献,我的问题RT:
以下是我的部分分析:
我看到登陆请求为:/api/account/signin
那么按照README.md的步骤,nginx负责前端页面请求,tomcat负责后端业务逻辑处理,理论上这个已经是跨域;没有指定完整的请求路径则意味着/api/account/signin和login.html同属一个域,但实际上,两个服务器分别负责前后端则必然是不同的域,起码不可能同时在一个端口上启动监听,所以README.md部署说明和前端AJAX请求看起来是矛盾的。
所以请disconf的设计人员看看,这个是否有问题?
lz你好,在disconf-web的部署说明那部分里,说道:
配置文件包括:
我在想是不是有一套缺省配置的demo,好让大家可以对着properties的key配置自己的环境,
如果没有这样4个示例文件的话,而是自己各自填的话,lz的程序启动时,怎么读取db信息,zk信息,redis信息等等,上群里问了下,没人搭理,只要来提iss,望lz见谅~~~
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.