2017-11-17 13 views
0

私は、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サーバーに変更を加える必要がありますか? 助けてください

+0

は、私は豆 @Bean 公共HibernateJpaSessionFactoryBeanのSessionFactory(){)新しいHibernateJpaSessionFactoryBeanを(返す を削除することで問題を解決しました。 } エンティティマネージャーとして永続コンテキストautowirinng 次に、entityManager.unWrap()を使用してentityManagerから基本のsessionFactoryをアンパックしました。 – Brayan

答えて

0

暗黙的にJTAを使用する場合は、ルックアップまたは工場アクセス(OpenEJB.getTransactionManager())のどちらかを使用してトランザクションマネージャのアクセスを設定できます。

関連する問題