我需要通过http的XML接口将Web应用程序的一些服务公开给远程客户端.许多提供的服务是有限的(3-7),请求和响应应保持简单,不需要任何特殊数据类型或跨实体关系.
我的目标是保持代码清洁和清晰,并具有强大且高性能的应用程序.我非常感谢您就使用适当的XML绑定\处理工具提出的建议.
UPD:我的不好,没有提到restlet是实现所必需的,但是,就我而言,它并没有对要使用的xml工具施加任何限制.
提前致谢.
在本机 JSF 2.0 环境中,用户可以使用类似的内容引用请求参数
@ManagedProperty("#{param.id}")
private Long id;
Run Code Online (Sandbox Code Playgroud)
不过,我使用 Spring 来管理 JSF bean,因此 在我的情况下, @ManagedProperty注释被忽略。仍然可以在 faces-config.xml 中使用#{param.id}语句,但基于注释的配置显然更可取。
有没有办法用Spring注解来解决这样的语句?
我的应用程序是一个销售鱼类,水族馆等的商店.我想根据销售数量获得所有项目中的前10个项目列表.我使用以下类:
@MappedSuperclass
@NamedQueries({
@NamedQuery(name="getTopItems",query="SELECT x FROM FishStoreItem x ORDER BY x.salescnt DESC, x.title DESC")
})
public abstract class FishStoreItem
extends DomainSuperClass implements Serializable {
......
}
Run Code Online (Sandbox Code Playgroud)
问题出在以下异常中:
异常[EclipseLink-8034](Eclipse Persistence Services - 2.0.0.v20091127-r5931):org.eclipse.persistence.exceptions.JPQLException异常描述:编译查询时出错[getTopItems:SELECT x FROM FishStoreItem x ORDER BY x.salescnt DESC ,x.title DESC].未知的实体类型[FishStoreItem].
相同的代码适用于Apache OpenJpa 2.0.0,但在EclipseLink ver 2.1.0,2.0.1,1.0中失败.
PS我已经发现这对Hibernate的解决方案,但我想,以确保它的EclipseLink是不可能的了.
应用程序基于Spring 2.5.5和hibernate 3.2.0 GA.
我的DAO中有以下方法,它将MessageEntities附加到指定的User:
public MessageEntity findByUserId(int userId) {
List<MessageEntity> result = (List<MessageEntity>) em.createNamedQuery(MessageEntity.Q_BY_USER_ID).setParameter("userId", userId).getResultList();
if (!result.isEmpty()) {
return result.get(0);
} else {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要从集成测试中调用此方法来检查系统的行为是否有效.只要这个方法不是事务性的,我得到的就是org.hibernate.SessionException:Session被关闭了!.避免这种情况的最简单方法是使用@Transactional(readOnly = true)标记findByUserId方法.但据我了解,事务管理应该是服务层的职责,以避免不必要的事务创建.所以,我的问题是:我怎样才能正确地摆脱SessionException?
java ×4
jpa ×2
spring ×2
eclipselink ×1
hibernate ×1
jsf ×1
jsf-2 ×1
rest ×1
transactions ×1
web-services ×1
xml ×1