关于网友提出的“ 请问一个问题,struts2 json 和aop cglib在异步时问题,谢谢”问题疑问,本网通过在网上对“ 请问一个问题,struts2 json 和aop cglib在异步时问题,谢谢”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 请问一个问题,struts2 json 和aop cglib在异步时问题,谢谢
描述:本帖最后由 ziyeibin 于 2013-06-01 09:14:34 编辑
JSONAOPStrutsJavaCGLIB
由于异步时json序列化get方法,在异步时报错,在类中可以用@JSON(serialize=false)解决,但是不知道为什么json也序列化aop中的方法,但也不知道是不是真的这个问题,
异常如下
2013-06-01 08:50:55,994 - org.apache.struts2.json.JSONWriter -140941 [http-8080-1] DEBUG - com.bin.action.LoginAction.isExposeProxy()
java.lang.NoSuchMethodException: com.bin.action.LoginAction.isExposeProxy()
at java.lang.Class.getMethod(Unknown Source)
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
2013-06-01 08:50:55,995 - org.apache.struts2.json.JSONWriter -140942 [http-8080-1] DEBUG - com.bin.action.LoginAction.isFrozen()
java.lang.NoSuchMethodException: com.bin.action.LoginAction.isFrozen()
at java.lang.Class.getMethod(Unknown Source)
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
2013-06-01 08:50:56,002 - org.apache.struts2.json.JSONWriter -140949 [http-8080-1] DEBUG -
java.lang.NullPointerException
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
2013-06-01 08:50:56,004 - org.apache.struts2.json.JSONWriter -140951 [http-8080-1] DEBUG - com.bin.action.LoginAction.isPreFiltered()
java.lang.NoSuchMethodException: com.bin.action.LoginAction.isPreFiltered()
at java.lang.Class.getMethod(Unknown Source)
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
2013-06-01 08:50:56,004 - org.apache.struts2.json.JSONWriter -140951 [http-8080-1] DEBUG - com.bin.action.LoginAction.getProxiedInterfaces()
java.lang.NoSuchMethodException: com.bin.action.LoginAction.getProxiedInterfaces()
at java.lang.Class.getMethod(Unknown Source)
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
2013-06-01 08:50:56,005 - org.apache.struts2.json.JSONWriter -140952 [http-8080-1] DEBUG - com.bin.action.LoginAction.isProxyTargetClass()
java.lang.NoSuchMethodException: com.bin.action.LoginAction.isProxyTargetClass()
at java.lang.Class.getMethod(Unknown Source)
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
2013-06-01 08:50:56,006 - org.apache.struts2.json.JSONWriter -140953 [http-8080-1] DEBUG -
java.lang.NullPointerException
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
2013-06-01 08:50:56,007 - org.apache.struts2.json.JSONWriter -140954 [http-8080-1] DEBUG - com.bin.action.LoginAction.getTargetClass()
java.lang.NoSuchMethodException: com.bin.action.LoginAction.getTargetClass()
at java.lang.Class.getMethod(Unknown Source)
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
2013-06-01 08:50:56,008 - org.apache.struts2.json.JSONWriter -140955 [http-8080-1] DEBUG - com.bin.action.LoginAction.getTargetSource()
java.lang.NoSuchMethodException: com.bin.action.LoginAction.getTargetSource()
at java.lang.Class.getMethod(Unknown Source)
at org.apache.struts2.json.JSONWriter.findBaseAccessor(JSONWriter.java:294)
at org.apache.struts2.json.JSONWriter.bean(JSONWriter.java:202)
at org.apache.struts2.json.JSONWriter.processCustom(JSONWriter.java:178)
at org.apache.struts2.json.JSONWriter.process(JSONWriter.java:168)
at org.apache.struts2.json.JSONWriter.value(JSONWriter.java:134)
at org.apache.struts2.json.JSONWriter.write(JSONWriter.java:102)
at org.apache.struts2.json.JSONUtil.serialize(JSONUtil.java:116)
at org.apache.struts2.json.JSONResult.createJSONString(JSONResult.java:197)
at org.apache.struts2.json.JSONResult.execute(JSONResult.java:171)
Action类:
package com.bin.action;
@Scope("prototype")
@Controller
public class LoginAction extends ActionSupport implements ServletRequestAware{
private static Logger log = Logger.getLogger(LoginAction.class);
@Resource
private LoginService loginService;
private HttpServletRequest request;
private User user;
private String msg;
public String execute() throws Exception {
if (user == null || user.getAccount().equals("")
|| user.getPassword().equals("")) {
return LOGIN;
}
User userInfo = loginService.getUserInfo(user.getAccount());
if (userInfo == null) {
setMsg("找不到该用户,请检查账户是否正确");
} else if (user.getPassword().equals(userInfo.getPassword())) {
setMsg("success");
ServletActionContext.getContext().getSession().put("user", userInfo);
} else if (!user.getPassword().equals(userInfo.getPassword())) {
setMsg("密码错误,请检查密码是否正确");
}
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setLoginService(LoginService loginService) {
this.loginService = loginService;
}
@JSON(serialize=false)
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
struts.xml
aop类:
@Repository
@Aspect
public class ExceptionAspect {
@Pointcut("execution(* com.bin.action.*.*(..) throws Exception)")
private void anyMethod() {}
@AfterThrowing(pointcut="anyMethod()",throwing="e")
public void doAfterThrowing(JoinPoint jp,Exception e) {
System.out.println("异常通知:"+jp.getSignature().getName());
e.printStackTrace();
}
注,我用aop 切入service层是没问题的,但是我这AOP希望能切入action层,不知道表达有没问题,谢谢
解决方案1: 不熟楼主说的那些东西。
但是java.lang.NoSuchMethodException这个异常绝大多数情况是某个包的版本不对。比如a.jar中引用了B.class(version1),但是楼主的运行环境中不止一个B.class或者是有一个版本不对的B.class.
以上介绍了“ 请问一个问题,struts2 json 和aop cglib在异步时问题,谢谢”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2879867.html