[
https://issues.apache.org/jira/browse/CXF-3853?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13136075#comment-13136075
]
Aki Yoshida commented on CXF-3853:
----------------------------------
Initially, I was thinking of introducing some properties in the store
configuration. But this will require a change in the configuration schema and
hence will require more thought to find the best solution.
Therefore, for now, I think we should provide a simpler less-invasive approach,
namely changing the isTableExistsError method of RMTxStore to a protected
instance method so that you can write your own RMTxStore to overwrite this
method.
This means, you can write your store as:
{code}
package demo.cxf.ws.rm.persistence.jdbc;
import java.sql.SQLException;
import org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore;
public class MyCustomRMStore extends RMTxStore {
private static final String MYDB_TABLE_EXISTS_STATE = "I6000";
@Override
protected boolean isTableExistsError(SQLException ex) {
return MYDB_TABLE_EXISTS_STATE.equals(ex.getSQLState());
}
}
{code}
and you can instantiate this bean and set to it the rm-manager's store.
{code}
<bean id="testStore" class="demo.cxf.ws.rm.persistence.jdbc.MyCustomRMStore">
<property name="driverClassName" value="..."/>
<property name="userName" value="..."/>
<property name="password" value="..."/>
<property name="url" value="jdbc:..."/>
</bean>
{code}
> RMTxStore: Vendor specific condition check
> ------------------------------------------
>
> Key: CXF-3853
> URL: https://issues.apache.org/jira/browse/CXF-3853
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Reporter: Harsha Hegde
> Assignee: Aki Yoshida
>
> While using the reliable messaging in the CXF. The condition checks to create
> Database tables for a given RM store is vendor specific. As the method which
> does this check is private static, this behavior cannot be overridden.
> In the class org.apache.cxf.ws.rm.persistence.jdbc.RMTxStore the while
> initializing the RM store the method isTableExistsError is hard coded with
> vendor error codes for derby and oracle, so if we use any other RDBMS
> underneath then we run into errors that the tables already exists. As this
> method is private static this cannot be overridden either.
> Please provide means to have vendor independent checks.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira