There's tapestry-hibernate-core which only depends on tapestry-ioc. tapestry-hibernate builds on top of this with web specific services
https://mvnrepository.com/artifact/org.apache.tapestry/tapestry-hibernate-core/5.4.3 On 9 May 2017 03:54, "Thomas Mayer" <thomas.ma...@student.kit.edu> wrote: > Hello Thiago, > > thanks for your answer. > > The idea was to only use tapestry-ioc which is supposed to be usable as > an isolated component with no dependency to tapestry-core. > > tapestry-hibernate, however, depends on tapestry-core, according to > https://mvnrepository.com/artifact/org.apache.tapestry/ > tapestry-hibernate/5.4.3 > That's not necessarily a no-go for general usage, but "taints" my > original concept. > > For my use case it would be perfectly fine to only use one Hibernate > session throughout the project (no threading, etc.). The project itself > does some batch processing (no web context, etc.). > > Should I ever need multiple Sessions, that's where @ServiceId could step > in (still single threaded). > > Still, all of these considerations don't deal whith the original > question why creating this Session service is failing so hard. At least > good to know that my code should run in general. Thanks for that. > > Now, where is the missing part? Is it Tapestry-Ioc related or Hibernate > related? > > If the code should run, but fails, then, maybe there is a bug/limitation > somewhere which might be worth to get fixed. > > Best regards > Thomas > > Am 09.05.2017 um 00:57 schrieb Thiago H. de Paula Figueiredo: > > Hello! > > > > Why don't you just use tapestry-hibernate to let it deal with creating > and > > handling Hibernate sessions? > > https://tapestry.apache.org/using-tapestry-with-hibernate.html > > > > Also, I believe your code may not be incorrect, but it's not good. Unless > > you want only one Hibernate session for the whole application and you > never > > have threads in parallel using it, your code will be fail hard. Hibernate > > sessions are not thread-safe and Tapestry-IoC services are singletons by > > default. Your code doesn't tell T-IoC the service is per-thread. > > > > Also, why are you using @ServiceId? Tapestry-IoC services are usually > > defined by their type, not by their id, and service ids are generally > only > > used when you have more than one service with the same type. > > > > > > On Mon, May 8, 2017 at 2:56 AM, Thomas Mayer < > thomas.ma...@student.kit.edu> > > wrote: > > > >> Hi, this report/question is for > >> > >> tapestry-ioc 5.4.3 > >> hibernate-core 5.2.10.Final > >> openjdk version "1.8.0_121" > >> OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1. > >> 16.04.2-b13) > >> OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode) > >> > >> I'm trying to have a ServiceId for a hibernate Session: > >> > >> @ServiceId("HibernateSession") > >> public static Session buildHibernateSession( > >> ObjectLocator objectLocator > >> ) { > >> return new Configuration() > >> .configure("hibernate.cfg.xml") > >> .buildSessionFactory() > >> .openSession(); > >> } > >> > >> As soon as the HibernateSession is invoked by Tapestry-IOC, I get an > >> error: java.lang.ClassFormatError: Duplicate method name&signature in > >> class file $Session_350f95bde0b5 > >> > >> Please note thate I can serve the SessionFactory perfectly fine with > >> Tapestry-IoC (just by omitting the "openSession()"). > >> > >> Is there something wrong in the code above? > >> Can someone reproduce it? > >> Is this a bug in Tapestry-IoC? > >> Is this a bug/limitation in Hibernate? > >> > >> > >> > >> 2017-05-08 07:31:02 DEBUG HibernateSession:261 - Creating proxy for > >> service HibernateSession > >> Exception in thread "main" java.lang.ClassFormatError: Duplicate method > >> name&signature in class file $Session_350f95bde0b5 > >> at java.lang.ClassLoader.defineClass1(Native Method) > >> at java.lang.ClassLoader.defineClass(ClassLoader.java:763) > >> at java.lang.ClassLoader.defineClass(ClassLoader.java:642) > >> at > >> org.apache.tapestry5.internal.plastic.PlasticClassLoader. > >> defineClassWithBytecode(PlasticClassLoader.java:52) > >> at > >> org.apache.tapestry5.internal.plastic.PlasticClassPool. > >> realize(PlasticClassPool.java:160) > >> at > >> org.apache.tapestry5.internal.plastic.PlasticClassPool. > >> realizeTransformedClass(PlasticClassPool.java:139) > >> at > >> org.apache.tapestry5.internal.plastic.PlasticClassImpl. > createInstantiator( > >> PlasticClassImpl.java:648) > >> at > >> org.apache.tapestry5.plastic.PlasticManager.createProxy( > >> PlasticManager.java:253) > >> at > >> org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl. > >> createProxy(PlasticProxyFactoryImpl.java:68) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxyInstance( > >> ModuleImpl.java:484) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl. > createProxy(ModuleImpl.java: > >> 478) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl.access$ > >> 900(ModuleImpl.java:40) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke( > ModuleImpl.java:322) > >> at > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl. > >> invoke(OperationTrackerImpl.java:82) > >> at > >> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke( > >> PerThreadOperationTracker.java:72) > >> at > >> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke( > >> RegistryImpl.java:1260) > >> at org.apache.tapestry5.ioc.internal.ModuleImpl.create( > >> ModuleImpl.java:344) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl.access$ > >> 100(ModuleImpl.java:40) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke( > ModuleImpl.java:198) > >> at > >> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite( > >> ConcurrentBarrier.java:139) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke( > ModuleImpl.java:215) > >> at > >> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead( > >> ConcurrentBarrier.java:83) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl. > findOrCreate(ModuleImpl.java: > >> 221) > >> at > >> org.apache.tapestry5.ioc.internal.ModuleImpl. > getService(ModuleImpl.java: > >> 112) > >> at > >> org.apache.tapestry5.ioc.internal.RegistryImpl. > >> getService(RegistryImpl.java:497) > >> at > >> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl. > >> getService(ObjectLocatorImpl.java:43) > >> at > >> org.apache.tapestry5.ioc.internal.util.InternalUtils$ > >> 22.run(InternalUtils.java:1429) > >> at > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl. > >> run(OperationTrackerImpl.java:56) > >> at > >> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run( > >> PerThreadOperationTracker.java:60) > >> at > >> org.apache.tapestry5.ioc.internal.RegistryImpl.run( > RegistryImpl.java:1254) > >> at > >> org.apache.tapestry5.ioc.internal.util.InternalUtils. > >> extendPlanForInjectedFields(InternalUtils.java:1419) > >> at > >> org.apache.tapestry5.ioc.internal.util.InternalUtils. > >> access$200(InternalUtils.java:50) > >> at > >> org.apache.tapestry5.ioc.internal.util.InternalUtils$ > >> 20.invoke(InternalUtils.java:1380) > >> at > >> org.apache.tapestry5.ioc.internal.util.InternalUtils$ > >> 20.invoke(InternalUtils.java:1366) > >> at > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl. > >> invoke(OperationTrackerImpl.java:82) > >> at > >> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke( > >> PerThreadOperationTracker.java:72) > >> at > >> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke( > >> RegistryImpl.java:1260) > >> at > >> org.apache.tapestry5.ioc.internal.util.InternalUtils. > >> createConstructorConstructionPlan(InternalUtils.java:1363) > >> at > >> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.getPlan( > >> ConstructorServiceCreator.java:52) > >> at > >> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator. > createObject( > >> ConstructorServiceCreator.java:62) > >> at > >> org.apache.tapestry5.ioc.internal.ReloadableServiceImplementatio > >> nObjectCreator.createInstance(ReloadableServiceImplementatio > >> nObjectCreator.java:54) > >> at > >> org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreato > >> r$1.invoke(AbstractReloadableObjectCreator.java:136) > >> at > >> org.apache.tapestry5.ioc.internal.OperationTrackerImpl. > >> invoke(OperationTrackerImpl.java:82) > >> 2017-05-08 07:31:02 ERROR Registry:208 - Duplicate method name&signature > >> in class file $Session_350f95bde0b5 > >> at > >> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke( > >> PerThreadOperationTracker.java:72) > >> 2017-05-08 07:31:02 ERROR Registry:209 - Operations trace: > >> at > >> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke( > >> RegistryImpl.java:1260) > >> 2017-05-08 07:31:02 ERROR Registry:218 - [ 1] Reloading class > >> dbla.dbla.controller.TraceImportController. > >> 2017-05-08 07:31:02 ERROR Registry:218 - [ 2] Creating plan to > >> instantiate dbla.dbla.controller.TraceImportController via public > >> dbla.dbla.controller.TraceImportController() > >> 2017-05-08 07:31:02 ERROR Registry:218 - [ 3] Calculating possible > >> injection value for field > >> dbla.dbla.controller.TraceImportController.hibernateSession > >> (org.hibernate.Session) > >> 2017-05-08 07:31:02 ERROR Registry:218 - [ 4] Creating proxy for service > >> HibernateSession > >> at > >> org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreato > >> r.createInstance(AbstractReloadableObjectCreator.java:129) > >> at > >> org.apache.tapestry5.ioc.internal.AbstractReloadableObjectCreato > >> r.createObject(AbstractReloadableObjectCreator.java:121) > >> at $ControllerInterface_350f95bde0af.delegate(Unknown Source) > >> at $ControllerInterface_350f95bde0af.execute(Unknown Source) > >> at $ControllerInterface_350f95bde0ad.execute(Unknown Source) > >> at dbla.dbla.DbLogAnonymizer.main(DbLogAnonymizer.java:19) > >> > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > >> For additional commands, e-mail: users-h...@tapestry.apache.org > >> > >> > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > >