下面是一个GWT的Server类调用Spring中Service类的问题例子
public class PermissionServiceImpl extends BaseService implements PermissionService
{
private static final long serialVersionUID = 1L;
PermissionManageService pm ;
/*PermissionManageService pm = (PermissionManageService) springContext
.getBean("permissionManageService")*/
public String show(int id)
{
pm = (PermissionManageService) springContext
.getBean("permissionManageService");
Permission p=pm.findPermissionByID(id);
System.out.println("show方法调用"+p.toString());
return p.toString();
}
public String[] showRoles(int id)
{
List roles= (List) pm.findPermissionByID(id).getRoles();
String[] result=new String[roles.size()];
for(int i=0;i<roles.size();i++)
{
result[i]=roles.get(i).toString();
}
return result;
}
}
PermissionServiceImpl 是GWT的Server端实现,BaseService是为了与Spring集成而写的一个父类,代码见此栏目的另一篇文章『过段时间会加上』,PermissionManageService是Spring的Service类接口。
注意:pm的初始化应该放到show方法中,这样在调用show方法的时候才不会onFailure;而将pm的初始化放在声明的时候就会出错,总是调不到方法。我个人推测可能GWT在管理Server端类的时候定义了自己的生命周期管理方式,从而控制变量的初始化。由于现在没有更多的资料可供查证,也这能把初始化放到每个要执行的方法中了。