2015-02-23 6 views
0

Я работаю над websphere 6.1, перейдя на jboss EAP 6.3. Я считаю, что процесс развертывания очень прост в содержании jboss, что мой старый сервер содержит только войны.jboss eap обходное соединение по умолчанию соединение: autocommit = true

Конфигурация разделяемых библиотек прошла без проблем, но проблема связана с конфигурацией источников данных. Ошибка java.sql.SQLException: вы не можете совершать с помощью набора autocommit! блок проход.

Я искал в google, скажем, что это стандарт, и что мы должны изменить код на setAutoCommit (Fasle).

Но в моем случае, чтобы этот проход был прозрачным для разработчиков или с минимальными изменениями, я не могу изменить войну. Область моего вмешательства - только сервер приложений.

Ниже конфигурации файла standalone.xml:

спасибо за руководство меня, если еще один вопрос, который имеет дело с той же проблемой, я не нашел подобную проблему. даже если это что-то элементарное, на мой взгляд!

Similar questions but need more detail

Любые идеи, пожалуйста?

<datasource jta="true" jndi-name="java:/jdbc/XXXXPool" pool-name="XXXXPool" enabled="true" use-ccm="true"> 
    <connection-url>jdbc:oracle:thin:@xxxxxxxxx:1521:xxx</connection-url> 
    <driver-class>oracle.jdbc.OracleDriver</driver-class> 
    <datasource-class>oracle.jdbc.pool.OracleConnectionPoolDataSource</datasource-class> 
    <connection-property name="autoCommit"> <!-- not working --> 
     false 
    </connection-property> 
    <driver>OracleJDBCDriver</driver> 
    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
    <security> 
     <user-name>xx</user-name> 
     <password></password> 
    </security> 
    <validation> 
     <validate-on-match>false</validate-on-match> 
     <background-validation>false</background-validation> 
    </validation> 
    <timeout> 
     <set-tx-query-timeout>false</set-tx-query-timeout> 
     <blocking-timeout-millis>0</blocking-timeout-millis> 
     <idle-timeout-minutes>0</idle-timeout-minutes> 
     <query-timeout>0</query-timeout> 
     <use-try-lock>0</use-try-lock> 
     <allocation-retry>0</allocation-retry> 
     <allocation-retry-wait-millis>0</allocation-retry-wait-millis> 
    </timeout> 
    <statement> 
     <share-prepared-statements>false</share-prepared-statements> 
    </statement> 
</datasource> 
<drivers> 
    <driver name="OracleJDBCDriver" module="oracle.jdbc"/> 
    <driver name="h2" module="com.h2database.h2"> 
     <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> 
    </driver> 
</drivers> 

Ошибка:

java.sql.SQLException: You cannot commit with autocommit set! 

16:38:40,205 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection.jdbcCommit(BaseWrapperManagedConnection.java:1071) 

16:38:40,206 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.jboss.jca.adapters.jdbc.WrappedConnection.commit(WrappedConnection.java:758) 

16:38:40,206 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at com.client.Series.utiles.UserUtilesClass.checkUser(UserUtilesClass.java:370) 

16:38:40,206 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at com.client.Series.form.LoginForm.validate(LoginForm.java:65) 

16:38:40,206 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:942) 

16:38:40,206 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:255) 

16:38:40,207 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 

16:38:40,207 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 

16:38:40,207 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 

16:38:40,207 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 

16:38:40,208 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) 

16:38:40,208 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 

16:38:40,208 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:231) 

16:38:40,208 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) 

16:38:40,209 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) 

16:38:40,209 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) 

16:38:40,209 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) 

16:38:40,209 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) 

16:38:40,209 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344) 

16:38:40,210 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) 

16:38:40,210 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) 

16:38:40,210 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:926) 

16:38:40,211 ERROR [stderr] (http-/xxx.xx.xx.xx:8080-1)   at java.lang.Thread.run(Unknown Source) 
+0

Немного догадываться, но вы пытались установить свойство как autoCommit вместо autocommit? –

+0

да, я уже пробовал. Спасибо за ответ – Bouabidi

ответ

0

Я боюсь, что это единственный способ сделать это: установить опцию автоматической фиксации на ложный программно при получении каждого соединения. И основной причиной этого является спецификация JCA, где режим автоматической фиксации объекта Connection, участвующего в транзакции, отключен (false). Вот почему вы не можете изменить режим автоматической фиксации транзакции.

+0

, но в Websphere все работает как часы и tomcat. невозможно переопределить класс org.jboss.jca.adapters.jdbc.BaseWrapperManagedConnection? В противном случае я должен отказаться от jboss и выбрать другой сервер приложений! – Bouabidi

Смежные вопросы