You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Jeffrey Black <je...@yahoo.com> on 2011/10/02 15:19:42 UTC

Re: an odd problem about struts2 annotation

Is your Tomcat configured for autodeploy=true?

tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html

JB


On Sep 29, 2011, at 10:30 PM, Steven Yang <ke...@gmail.com> wrote:

> for one reason is that struts2 will not scan your classes in jar is that if
> someone tempered with you jar or any of your jar has class with Struts
> Annotations then your user can access these actions without you knowing it.
> I believe this is the same reason why Spring doesnt scan files in jars and
> in order to use them you have to declare them explicitly in xml files.
> 
> On Fri, Sep 30, 2011 at 10:49 AM, dan.zheng <cm...@gmail.com> wrote:
> 
>> I know some tricky about this problem
>> the struts convention will scan action class in the specific package
>> for example:
>> struts.convention.package.locators indicate the action class suffix
>> 
>> but when you jar the classes,I suppose that struts2 can't scan the action
>> class
>> in jar files,if this is true,I will always deploy war with class files
>> exploded,I want to find
>> a workaround,thanks
>> 
>> On Fri, Sep 30, 2011 at 10:22 AM, dan.zheng <cm...@gmail.com> wrote:
>> 
>>> I jar the classes and put it into WEB-INF/lib
>>> of course you know,the war will package all jars and jsp files in bundle
>>> why the struts2 can't scan classes in WEB-INF/lib?
>>> 
>>> 
>>> On Fri, Sep 30, 2011 at 10:05 AM, Steven Yang <kenshin520@gmail.com
>>> wrote:
>>> 
>>>> sorry just to be clear
>>>> did you "jar" the classes or did you "war" the classes?
>>>> 
>>>> if you "jar" the classes then i dont think struts 2 will scan your
>> classes
>>>> in jars.
>>>> 
>>>> On Thu, Sep 29, 2011 at 2:34 PM, dan.zheng <cm...@gmail.com> wrote:
>>>> 
>>>>> hi,everyone
>>>>> I meet an odd problem with struts2 annotation,Let me elaborate it
>> first
>>>>> 
>>>>> import java.util.List;
>>>>> 
>>>>> import lombok.Getter;
>>>>> import lombok.Setter;
>>>>> 
>>>>> import org.apache.commons.lang.StringUtils;
>>>>> import org.apache.struts2.ServletActionContext;
>>>>> import org.apache.struts2.convention.annotation.Action;
>>>>> import org.apache.struts2.convention.annotation.Result;
>>>>> import org.apache.struts2.convention.annotation.Results;
>>>>> import org.apache.struts2.interceptor.validation.SkipValidation;
>>>>> import org.springframework.beans.factory.annotation.Autowired;
>>>>> 
>>>>> import com.dbappsecurity.portal.model.PortalUser;
>>>>> import com.dbappsecurity.portal.service.PortalUserService;
>>>>> import com.opensymphony.xwork2.ActionSupport;
>>>>> 
>>>>> @Results({
>>>>>   @Result(name="input",location="main.jsp"),
>>>>>   @Result(name="list",location="list.jsp")
>>>>> })
>>>>> public class MainAction extends ActionSupport {
>>>>>   @Getter @Setter private PortalUser user;
>>>>>   @Autowired
>>>>>   private PortalUserService portalUserService;
>>>>>   public String execute() throws Exception {
>>>>>       return INPUT;
>>>>>   }
>>>>>   @Action("addUser")
>>>>>   public String addUser() throws Exception {
>>>>>       portalUserService.addUser(user);
>>>>>       return listUser();
>>>>>   }
>>>>>   @Action("listUser")
>>>>>   @SkipValidation
>>>>>   public String listUser() throws Exception {
>>>>>       List theUserList = portalUserService.getPortalUserList(null);
>>>>> 
>>>>> 
>> ServletActionContext.getRequest().setAttribute("userList",theUserList);
>>>>>       return "list";
>>>>>   }
>>>>>   @Action("modifyUser")
>>>>>   public String modifyUser() throws Exception {
>>>>>       List theUserList = portalUserService.getPortalUserList(null);
>>>>> 
>>>>> 
>> ServletActionContext.getRequest().setAttribute("userList",theUserList);
>>>>>       return "list";
>>>>>   }
>>>>> 
>>>>> this is the struts2 action class, I configure it correctly and type
>> the
>>>> url
>>>>> http://domain/listUser   it will list all users
>>>>> http://domain/modifyUser it can modify the users
>>>>> all things go well in tomcat with exploded class files
>>>>> 
>>>>> but when I build with the war file and deploy it into tomcat webapp
>>>> folder,
>>>>> the page report
>>>>> there is no action name listUser
>>>>> the difference between the two scenario is exploded class files and
>>>>> archived
>>>>> class files that I compile and jar the action and other class files
>> into
>>>>> it.
>>>>> I was puzzled about this phenomenon
>>>>> 
>>>>> so any suggestions and advices will be very appreciated!
>>>>> 
>>>> 
>>> 
>>> 
>> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org