私は、sybaseデータベースからデータをフェッチするために、HibernateをHibernateでORMとして持っています。TOMEEサーバにSpringブートとHibernateアプリケーションをデプロイ
私は非常に基本的なセットアップとその組み込みサーバーで正常に動作します。 私はこの次のサイトを使って戦争を生成し、それをローカルのTomcatサーバーに正常に展開しました。 https://www.mkyong.com/spring-boot/spring-boot-deploy-war-file-to-tomcat/。
IはTOMEE/libに必要な休止ジャーを配置 CATALINA_OPTS = -javax.persistence.provider = org.hibernate.ejb.HibernatePersistence ABDを設定永続性TOMEEをオーバーライドしTOMEEサーバにアプリケーションをデプロイすることができました。 1.3.0 TOMEE 1.7:私は春のブートを使用しています
org.hibernate.HibernateException: Could not obtain transaction-synchronized
Session for current thread
org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134)
:
問題は、私は、次のエラーが発生します)私はデータにアクセスしようとすると、DAOでの要求は(sessionfactory.getcurrentsessionを呼び出しています。 4
これはちょうどスニペットと私のアプリの設定
Application.properties
0123であるように私のコードで私を判断してくださいいけませんMY主な用途
@SpringBootApplication
public class SpringBootWebApplication extends
SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder
application) {
return application.sources(SpringBootWebApplication.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(SpringBootWebApplication.class, args);
}
@Bean
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
}
コントローラ
@Controller
public class WelcomeController {
@Autowired
UserService service
@RequestMapping("/authenticate")
public String authenticate(httpServletRequest req, HtttpServletResponse res)
{
return service.authenticate(req.getParameter("userId"));
}
}
サービス
@Service
public class UserServiceImpl implements UserService{
@Autowired
UserManager userManager
@override
public String authenticate(String userId)
{
return userManager.authenticate(userId);
}
}
追加のマネージャー層
@Service
@Transactional
public class UserManagerImpl implements UserManager{
@Autowired
UserDao userDao
@override
public String authenticate(String userId)
{
User user = userDao.CheckUserIsPresentInDB(userId);
if(user != null){
return "success";
}
}
}
DAO層
@Repository
public class UserDaoImpl implements UserDao{
@Autowired
SessionFactory sessionFactory
@override
public User authenticate(String userId)
{
Criteria criteria = sessionFactory.getCurrentSession().createCriteria;
----
}
}
アプリケーションは、私の地元のTomcat 7サーバー が、TOMEEサーバー上のトランザクションを取得するためにerrrorを得ることに細かい動作します。
コードまたはTOMEEサーバーに変更を加える必要がありますか? 助けてください
は、私は豆 @Bean 公共HibernateJpaSessionFactoryBeanのSessionFactory(){)新しいHibernateJpaSessionFactoryBeanを(返す を削除することで問題を解決しました。 } エンティティマネージャーとして永続コンテキストautowirinng 次に、entityManager.unWrap()を使用してentityManagerから基本のsessionFactoryをアンパックしました。 – Brayan