`
leadyu
  • 浏览: 51436 次
  • 性别: Icon_minigender_1
  • 来自: 广州,福州
文章分类
社区版块
存档分类
最新评论

Jwebap项目(六)——plugin部署的设计讨论

阅读更多
Jwebap(jwebap介绍:http://www.iteye.com/topic/165593,jwebap.sourceforge.net)准备在0.6.*版本,实现初步的plugin管理,在plugin架构的基础上扩展jwebap的功能,这里专门讨论下关于部署管理的设计,欢迎大家提意见

Jwebap的Plugin部署设计包括:


可视化部署——Jwebap控制台

1)支持对plugin的界面部署,可以移除plugin和部署新的plugin

2)Component的参数可在界面配置,可以配置Component开关

部署方式

1)Jwebap分为core包和各种plugin包,在jwebap.xml里面可以配置{ *plugin-ref , *component , *action , *deispatcher}

2)plugin包的Meta-INF目录存放plugin.xml,配置{*component , *action , *deispatcher}
默认jwebap.xml里面只配置plugin-ref,以及core包需要的action和deispatcher,当在控制台修改了plugin的参数(比如JdbcComponent的driver-class参数),则会保存在jwebap.xml中

3)jwebap.xml配置的同名component,action,deispatcher优先于各plugin的配置

4)在jwebap控制修改了部署参数,暂时不支持刷新到RuntimeContext,必须重起Server方能生效,或者在第一次部署时手工修改配置文件

  • 描述: plugin deploy
  • 大小: 68.7 KB
分享到:
评论
3 楼 longmiaost 2008-09-19  
[ERROR,ContextLoader,main] Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Line 3 in XML document from ServletContext resource [/WEB-INF/jwebap.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Document root element "jwebap", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "jwebap", must match DOCTYPE root "null".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)



我在布置之后tomcat都启不起了,提示上面的错误,怎么解决啊???
2 楼 leadyu 2008-04-07  
当时,把Servlet和Listner分开,主要是考虑到Listner的加载顺序更前,在和spring等应用一起使用时可以保证先加载,避免一些类加载可能出现的问题。不过,这块是可以考虑进行一些简化
1 楼 javatar 2008-04-05  
关于部署, Jwebap的一个目标是简化配置, 基于此提一个建议:

Listener, Filter, Servlet是否可以三合一为Filter. 这样用户配置起来会方便一些

原配置:
<context-param>
	<param-name>config</param-name>
	<param-value>/WEB-INF/jwebap.xml</param-value>
</context-param>
<listener>
	<listener-class>org.jwebap.core.JwebapListener</listener-class>
</listener>
<filter>
	<filter-name>PageDetectFilter</filter-name>
	<filter-class>org.jwebap.plugin.http.DetectFilter</filter-class>
	<init-param>
		<param-name>excludeUrls</param-name>
		<param-value>/detect;/detect/*;*.js;*.jpg;*.htm;*.html;*.gif;*.png;*.css;*.swf</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>PageDetectFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
	<servlet-name>detect</servlet-name>
	<servlet-class>org.jwebap.ui.controler.JwebapServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>detect</servlet-name>
	<url-pattern>/detect/*</url-pattern>
</servlet-mapping>


改成:
<filter>
	<filter-name>JwebapFilter</filter-name>
	<filter-class>org.jwebap.web.JwebapFilter</filter-class>
	<init-param>
		<param-name>config</param-name>
		<param-value>/WEB-INF/jwebap.xml</param-value>
	</init-param>
	<init-param>
		<param-name>detect</param-name>
		<param-value>/detect</param-value>
	</init-param>
	<init-param>
		<param-name>excludeUrls</param-name>
		<param-value>*.js;*.jpg;*.htm;*.html;*.gif;*.png;*.css;*.swf</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>JwebapFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>


然后在Filter的init方法中处理原Listener的工作,
在Filter拦截/detect的请求, 派谴给原Servlet相关处理类.
并且在excludeUrls不需要再写"/detect;/detect/*;", 可以在Filter内部自动添加上.

如果要保持原有类职责分明, 也可以加一个扩展包, 专门处理简化API.

相关推荐

Global site tag (gtag.js) - Google Analytics