i found that tomcat 6 have not JTA,which server is able to persistence? 在 2010年9月3日 下午12:02,liang <[email protected]>写道:
> THS,Esteban,I found it which is resin's problem, so i replaced it to > tomcat6, i got other questions: > > in my webapp webroot/meta-inf/content.xml: > <?xml version="1.0" encoding="UTF-8"?> > <Context> > <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" > maxActive="10" maxIdle="2" maxWait="10000" > logAbandoned="true" > username="root" password="111111" > driverClassName="com.mysql.jdbc.Driver" > url="jdbc:mysql://localhost:3306/test"/> > </Context> > > webroot/web-inf/web.xml: > > <resource-ref> > <description>DB Connection</description> > <res-ref-name>jdbc/mysql</res-ref-name> > <res-type>javax.sql.DataSource</res-type> > <res-auth>Container</res-auth> > </resource-ref> > > webroot/meta-inf/persistence.xml: > > <?xml version="1.0" encoding="UTF-8" standalone="yes"?> > <persistence > version="1.0" > xsi:schemaLocation= > "http://java.sun.com/xml/ns/persistence > http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd > http://java.sun.com/xml/ns/persistence/orm > http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" > xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns="http://java.sun.com/xml/ns/persistence"> > > <!--persistence-unit name="ProcessService"> > <jta-data-source>java:/DefaultDS</jta-data-source> > <properties> > <property name="hibernate.hbm2ddl.auto" value="create-drop"/> > </properties> > </persistence-unit--> > > > <persistence-unit name="org.drools.persistence.jpa" > transaction-type="JTA"> > <provider>org.hibernate.ejb.HibernatePersistence</provider> > <jta-data-source>java:comp/env/jdbc/mysql</jta-data-source> > <class>org.drools.persistence.session.SessionInfo</class> > <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class> > > <class>org.drools.persistence.processinstance.ProcessInstanceEventInfo</class> > <class>org.drools.persistence.processinstance.WorkItemInfo</class> > > > <properties> > <property name="hibernate.dialect" > value="org.hibernate.dialect.MySQLDialect"/> > <property name="hibernate.max_fetch_depth" value="3"/> > <property name="hibernate.hbm2ddl.auto" value="create" /> > <property name="hibernate.show_sql" value="true" /> > <property name="hibernate.transaction.manager_lookup_class" > value="org.hibernate.transaction.BTMTransactionManagerLookup" /> > </properties> > </persistence-unit> > > </persistence> > > webroot/testJNDI.jsp: > > <%@ page import='java.sql.*, javax.sql.*, javax.naming.*' %> > <% > Context ic = new InitialContext(); > DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/mysql"); > > Connection conn = ds.getConnection(); > > try { > Statement stmt = conn.createStatement(); > ResultSet rs = stmt.executeQuery("select * from test"); > while (rs.next()) { %> > <%= rs.getString(1) %> <%= rs.getString(2) %><br><% > } > } finally { > conn.close(); > } > %> > > webroot/testDroolsFlow.jsp: > > <%@ page import='java.sql.*, javax.sql.*, javax.naming.*,com.abc.*' %> > <% > VdcService.exec(); > %> > > run the testJNDI.jsp,its OK.when i run testDroolsFlow.jsp, appears this > exception: > > java.lang.RuntimeException: Could not commit session > at > org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:119) > at > org.drools.persistence.jpa.impl.JPAKnowledgeServiceProviderImpl.newStatefulKnowledgeSession(JPAKnowledgeServiceProviderImpl.java:44) > at > org.drools.persistence.jpa.JPAKnowledgeService.newStatefulKnowledgeSession(JPAKnowledgeService.java:93) > at com.abc.VdcService.exec(VdcService.java:39) > at > org.apache.jsp._testDroolsFlow_jsp._jspService(_testDroolsFlow_jsp.java:60) > at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) > at > org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) > at > org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859) > at > org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579) > at > org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1555) > > at java.lang.Thread.run(Thread.java:619) > Caused by: javax.naming.NamingException: Cannot create resource instance > at > org.apache.naming.factory.TransactionFactory.getObjectInstance(TransactionFactory.java:113) > at > javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304) > at org.apache.naming.NamingContext.lookup(NamingContext.java:793) > at org.apache.naming.NamingContext.lookup(NamingContext.java:140) > at org.apache.naming.NamingContext.lookup(NamingContext.java:781) > at org.apache.naming.NamingContext.lookup(NamingContext.java:153) > at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152) > at javax.naming.InitialContext.lookup(InitialContext.java:392) > at > org.drools.persistence.session.SingleSessionCommandService.<init>(SingleSessionCommandService.java:102) > ... 22 more > > JNDI is OK,so i guess the question is in drools side,is right of my guess? > the exception is here: > 38 StatefulKnowledgeSession ksession = > 39 JPAKnowledgeService.newStatefulKnowledgeSession( kbase, > null, env ); > > > > PS: > > i write the webapp is want to know: > > 1. How to save drools into database > > 2. What data is saved in the tables; are all the instances of a > process stored? > > 3. Are all nodes in a ruleflow saved? > > 4. Are there any nodes which are not running saved in the tables? > > 5. What status are running and non-running nodes in the tables? > > > 2010/9/1 Esteban Aliverti <[email protected]> > > As far as I can see, this has nothing to do with drools. You can't even >> create the EntityManagerFactory. Try to set a finest log level >> for com.caucho.amber.* and org.hibernate.* to see why it is throwing a >> NPE. >> >> Best, >> >> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX >> >> Esteban Aliverti >> - Developer @ http://www.plugtree.com >> - Blog @ http://ilesteban.wordpress.com >> >> >> 2010/9/1 亮亮 <[email protected]> >> >>> hi: >>> >>> in my webapp, I use JPA to store the runtime state,i use this code in >>> VdcService.java which is a sample java class: >>> >>> EntityManagerFactory emf =Persistence.createEntityManagerFactory( >>> "org.drools.persistence.jpa" ); >>> Environment env = KnowledgeBaseFactory.newEnvironment(); >>> env.set( EnvironmentName.ENTITY_MANAGER_FACTORY, emf ); >>> >>> // create a new knowledge session that uses JPA to store the runtime >>> state >>> StatefulKnowledgeSession ksession = >>> JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env ); >>> >>> I put persistence.xml to webRoot/META-INF/ , persistence.xml: >>> >>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> >>> <persistence >>> version="1.0" >>> xsi:schemaLocation= >>> "http://java.sun.com/xml/ns/persistence >>> http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd >>> http://java.sun.com/xml/ns/persistence/orm >>> http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" >>> xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" >>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xmlns="http://java.sun.com/xml/ns/persistence"> >>> >>> <persistence-unit name="org.drools.persistence.jpa" >>> transaction-type="JTA"> >>> <provider>org.hibernate.ejb.HibernatePersistence</provider> >>> >>> <jta-data-source>java:comp/env/jdbc/mysql</jta-data-source> >>> <class>org.drools.persistence.session.SessionInfo</class> >>> >>> <class>org.drools.persistence.processinstance.ProcessInstanceInfo</class> >>> >>> <class>org.drools.persistence.processinstance.ProcessInstanceEventInfo</class> >>> <class>org.drools.persistence.processinstance.WorkItemInfo</class> >>> >>> >>> <properties> >>> <property name="hibernate.dialect" >>> value="org.hibernate.dialect.MySQLDialect"/> >>> <property name="hibernate.max_fetch_depth" value="3"/> >>> <property name="hibernate.hbm2ddl.auto" value="create" /> >>> <property name="hibernate.show_sql" value="true" /> >>> <property name="hibernate.transaction.manager_lookup_class" >>> value="org.hibernate.transaction.BTMTransactionManagerLookup" /> >>> </properties> >>> </persistence-unit> >>> >>> </persistence> >>> >>> I use resin 3.1.10, $resin-home/conf/resin.conf: >>> >>> <database> >>> <jndi-name>jdbc/mysql</jndi-name> >>> <driver type="org.gjt.mm.mysql.Driver"> >>> <url>jdbc:mysql://127.0.0.1:3306/test</url> >>> <user>root</user> >>> <password></password> >>> </driver> >>> >>> <prepared-statement-cache-size>8</prepared-statement-cache-size> >>> <max-connections>20</max-connections> >>> <max-idle-time>30s</max-idle-time> >>> </database> >>> >>> when i run this webapp , i got this exception: >>> >>> java.lang.NullPointerException >>> at >>> com.caucho.amber.manager.AmberPersistenceProvider.createEntityManagerFactory(AmberPersistenceProvider.java:65) >>> at >>> javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69) >>> at com.abc.abc.service.VdcService.exec(VdcService.java:32) >>> at com.abc.abc.resources.Apply.apply(Apply.java:55) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> at java.lang.reflect.Method.invoke(Method.java:597) >>> at >>> com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:156) >>> at >>> com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67) >>> at >>> com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:208) >>> at >>> com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:75) >>> at >>> com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:115) >>> at >>> com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:67) >>> at >>> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:724) >>> at >>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:689) >>> at >>> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:680) >>> at >>> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:324) >>> at >>> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:425) >>> at >>> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:604) >>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:91) >>> at >>> com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103) >>> at >>> org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:416) >>> at >>> com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) >>> at >>> org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99) >>> at >>> com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) >>> at >>> com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187) >>> at >>> com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265) >>> at >>> com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273) >>> at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682) >>> at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743) >>> at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662) >>> at java.lang.Thread.run(Thread.java:619) >>> >>> i can't solve it.How to solve it?help me ,THS >>> >>> _______________________________________________ >>> rules-users mailing list >>> [email protected] >>> https://lists.jboss.org/mailman/listinfo/rules-users >>> >>> >> >> _______________________________________________ >> rules-users mailing list >> [email protected] >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> >
_______________________________________________ rules-users mailing list [email protected] https://lists.jboss.org/mailman/listinfo/rules-users
