Web services 在Web服务中使用JPA的最佳方式是什么?
我正在使用第三方wsdl创建一个web服务,帮助我获得一种通知。现在,我必须将该通知保存在DB中,并执行与数据库相关的其他几个操作。 在My persistence.xml中,有两个持久性单元,如下所示:Web services 在Web服务中使用JPA的最佳方式是什么?,web-services,jpa,persistence-unit,Web Services,Jpa,Persistence Unit,我正在使用第三方wsdl创建一个web服务,帮助我获得一种通知。现在,我必须将该通知保存在DB中,并执行与数据库相关的其他几个操作。 在My persistence.xml中,有两个持久性单元,如下所示: <persistence-unit name="PU1" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<persistence-unit name="PU1" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/vsDS</jta-data-source>
<class>com.Response</class>
<class>com.Request</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
<persistence-unit name="PU2" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/vdDS</jta-data-source>
<class>com.LogRequest</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="eclipselink.logging.level" value="INFO"/>
</properties>
</persistence-unit>
public class Service {
private static Logger logger = Logger.getLogger(Service.class);
private EntityManagerFactory PU1;
private EntityManagerFactory PU2;
public Service(){
System.out.println("in service's constructer");
PU1=Persistence.createEntityManagerFactory("PU1");
PU2=Persistence.createEntityManagerFactory("PU2");
}
public void logSubRequest(String msg){
EntityManager em= PU1.createEntityManager();
try{
em.getTransaction().begin();
Request req=new Request();
req.setMessage(msg);
req.setStatus("Y");
em.persist(req);
em.getTransaction().commit();
}catch(Exception e){
logger.error("In logSubRequest="+e.getMessage());
e.printStackTrace();
}finally{
if(em.isOpen()){
em.close();
}
}
}
// there are several other methods of such kind that either persist entities or executeUpdate
}
我的问题是:我是采用标准方法用webservice实现JPA,还是采用其他技术/方法。如果我做了任何不符合标准的事情,请建议和指导。经常使用Web服务和JPA的组合,我认为没有理由选择其他持久性机制。我建议您坚持当前的设计,直到您的需求变得更加复杂 在更大的应用程序中,请求对象的等价物更复杂,产生的业务逻辑更具挑战性,这将添加更多的对象层,以便控制结构并实现重用 我倾向于这样想:Web服务接口只是进入my业务逻辑的一种可能方式。因此,我可能还有一个RESTful服务,或JMS接口。因此,我倾向于将我的业务逻辑放在EJB中,在简单的情况下是无接口EJB。我将重点放在EJB上,它是一个可重用的业务逻辑,我可以单独测试它。它将完成所有JPA工作。然后我的Web服务就使用EJB来完成它的工作。EJB负责处理事务,因此我不需要编写您拥有的事务控制代码