论坛首页 Java企业应用论坛

LightURL——打造零配置的Struts2开发方式

浏览 40822 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-01-16  
查看tomcat日志:
Caused by: Unable to load bean: type:com.opensymphony.xwork2.UnknownHandler class:com.demo2do.lighturl.LightURLUnknownHandler - bean - jar:file:/E:/MyTestProject/newmini_web/WebRoot/WEB-INF/lib/struts2-lighturl-plugin-0.9.jar!/struts-plugin.xml:8:108
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:239)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.register(StrutsXmlConfigurationProvider.java:100)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:156)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
... 22 more
Caused by: Bean type interface com.opensymphony.xwork2.UnknownHandler with the name default has already been loaded by bean - file:/E:/MyTestProject/newmini_web/WebRoot/WEB-INF/classes/struts-plugin.xml:8:108 - bean - jar:file:/E:/MyTestProject/newmini_web/WebRoot/WEB-INF/lib/struts2-lighturl-plugin-0.9.jar!/struts-plugin.xml:8:108
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:223)
... 25 more
0 请登录后投票
   发表时间:2009-01-16  
显然是jar包冲突所致,你肯定还有其他的struts2的plugin实现了UnknownHandler接口。
0 请登录后投票
   发表时间:2009-01-19  
按照你的配置:
## action package config 
lighturl.action.packages=com.demo2do.lighturl.action
 
## action mapping implementation class 
struts.mapper.class=com.demo2do.lighturl.LightURLActionMapper 
 
## default parent package 
lighturl.action.default.parent.package=lighturl 
 
## define your entity package (optional) 
# lighturl.entity.package=com.demo2do.lighturl.entity

建立om.demo2do.lighturl.action包
Index.java 类:
public class Index extends ActionSupport {

private static final long serialVersionUID = -2083335726534827269L;

/* (non-Javadoc)
* @see com.opensymphony.xwork2.ActionSupport#execute()
*/
@Override
public String execute() throws Exception {
return super.execute();
}

}

没有加index.java之前,启动tomcat什么问题都没有

启动tomcat,报错:
2009-1-19 14:39:18 org.apache.catalina.core.ApplicationContext log
信息: Initializing Spring root WebApplicationContext
2009-1-19 14:39:25 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2
java.lang.AbstractMethodError: com.demo2do.lighturl.config.impl.DefaultActionConfigBuilder$1.doesMatchResource()Z
at com.opensymphony.xwork2.util.ResolverUtil.isTestApplicable(ResolverUtil.java:391)
at com.opensymphony.xwork2.util.ResolverUtil.loadImplementationsInDirectory(ResolverUtil.java:384)
at com.opensymphony.xwork2.util.ResolverUtil.findInPackage(ResolverUtil.java:347)
at com.opensymphony.xwork2.util.ResolverUtil.find(ResolverUtil.java:302)
at com.demo2do.lighturl.config.impl.DefaultActionConfigBuilder.getPackageBasedActionMapper(DefaultActionConfigBuilder.java:255)
at com.demo2do.lighturl.config.impl.DefaultActionConfigBuilder.buildActionConfigs(DefaultActionConfigBuilder.java:115)
at com.demo2do.lighturl.LightURLConfigurationProvider.loadPackages(LightURLConfigurationProvider.java:80)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:179)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:424)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:213)
at com.demo2do.lighturl.LightURLFilter.init(LightURLFilter.java:40)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3696)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2009-1-19 14:39:25 org.apache.catalina.core.ApplicationContext log
信息: Closing Spring root WebApplicationContext
2009-1-19 14:39:25 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2009-1-19 14:39:25 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()




0 请登录后投票
   发表时间:2009-01-19  
楼上的朋友:不好意思,我前两天对LightURL做了一些bug fix。没有更新Javaeye这边上传的JAR包。

我已经重新上传了最新的jar包,你可以再试试。
0 请登录后投票
   发表时间:2009-01-19  
换了这个jar包,还是包一样的错误!
0 请登录后投票
   发表时间:2009-01-19  
目前 LightURL是基于struts2.0.X的版本写出来的。由于struts2.1.X尚属于beta版本,而且与之对应的XWork在IoC这块做了重大的修改,所以,我也暂不打算支持到struts2.1.X。如果使用struts2.1.X结合lighturl发生问题的朋友,请退回到 struts的稳定版本。
0 请登录后投票
   发表时间:2009-01-20  
相当有意思的东西,只是在代码中加入annotation作为配置来使用,会比较难维护。
可以参照Maven的理念,定制一套默认规则,只要使用者按照规则来,就几乎零配置。

总之,赞一个,希望可以越做越好。
0 请登录后投票
   发表时间:2009-01-21  
如果是包找不到,可以用DOCJAR.COM来查找
0 请登录后投票
   发表时间:2009-02-05   最后修改:2009-02-05
我这两天试了convetion 插件,和楼主的功能很相似,而楼主的lighturl 则可看做类似插件的扩展,不过我再这里有个疑问,在试用中感觉到一个问题,在楼主的介绍里没有看到倘若有这样一个action

  package com.example.action.user
  public class UserAction{
         public String editUser(){
      
         }
         public String listUser(){

         }  
         
         public String deleteUser(){

         }  

  
   
  }


这样一个有多个方法的action ,能否在不使用announced 的前提下,根据一定的规则默认映射到三个url呢
比如
/user/user-edit-user
/user/user-list-user
/user/user-delete-user
补充一点,一个action类里的方法默认映射到一个action,如果使用了announced ,再为该方法增加一个url映射呢
0 请登录后投票
   发表时间:2009-02-05  
kjj 写道
我这两天试了convetion 插件,和楼主的功能很相似,而楼主的lighturl 则可看做类似插件的扩展,不过我再这里有个疑问,在试用中感觉到一个问题,在楼主的介绍里没有看到倘若有这样一个action

  package com.example.action.user
  public class UserAction{
         public String editUser(){
      
         }
         public String listUser(){

         }  
         
         public String deleteUser(){

         }  

  
   
  }


这样一个有多个方法的action ,能否在不使用announced 的前提下,根据一定的规则默认映射到三个url呢
比如
/user/user-edit-user
/user/user-list-user
/user/user-delete-user
补充一点,一个action类里的方法默认映射到一个action,如果使用了announced ,再为该方法增加一个url映射呢


你的这个问题,我希望在下一个版本的LightURL上加上。

目前LightURL只是在resultCode的解析上有一些独到的地方,其他地方和Struts2之前的几个插件还是比较类似的,之后我考虑在URL映射上面再下点功夫,争取把默认的许多URL映射直接映射到方法,这样就不需要在方法上配Annotation了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics