我刚刚开始开发一个使用Hibernate的现有Wicket应用程序。我正在使用JAX-RS向Hibernate数据(在同一个web应用程序中)添加一个RESTful接口。JAX-RS servlet根本不与Wicket通信-它们独立地创建Hibernate会话。
我有一个类User,它使用net.databinder.auth.data中的类被定义为Hibernate实体(也是可编组的
@Entity
@Table(name = "user")
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement
public class User extends AbstractEntity implements DataUser {一切都很正常,直到我尝试将设置密码(BasicPassword是一种可嵌入的net.databinder.auth.data类型)添加到我的RESTful接口(直到现在,我忽略了password属性):
@XmlTransient
public void setPassword(BasicPassword password) {
this.password = password;
}
@XmlElement
public void setPassword(String password) {
setPassword(new BasicPassword(password));
}突然,当Apache CXF-JAXRS + Jackson + JAXB尝试在HTTP PUT中对我传入的JSON用户对象进行ummarshall时,它调用user.setPassword("...")并得到以下错误:
WARN - ApplicationExceptionMapper - WebApplicationException has been caught : There is no application attached to current thread "http-bio-8080"-exec-5 (through reference chain: com.example.entity.User["password"])哇- Wicket是怎么来的?Apache CXF-JAXRS应该调用Jackson提供程序,该提供程序使用JAXB注释来解组我的传入用户规范,从而创建一个未绑定的Hibernate User对象,对吗?它尝试使用字符串设置密码,便利性方法将字符串转换为BasicPassword实例。据我所知,这一切都与Wicket无关。
为什么Wicket会牵扯进来呢?在这一点上,我不想也不需要Wicket -我只需要创建一个新的分离的Hibernate对象。
发布于 2012-04-11 00:07:47
BasicPassword需要访问Wicket应用程序的授权设置才能计算密码哈希。我想你也需要通过WicketFilter来传递这些请求。
https://stackoverflow.com/questions/10092122
复制相似问题