Search code examples
wso2wso2-data-services-serverwso2-esb

Wso2 Data Service error: NoSuchMethodError


When I create a Wso2 Data Service in the Carbon Management Console, I get the following error:

[2014-07-15 09:21:40,558] ERROR {org.wso2.carbon.dataservices.core.DBDeployer} -  The Jim2.dbs service, which is not valid, caused {1}
java.lang.NoSuchMethodError: org.apache.axis2.wsdl.WSDLUtil.getConstantFromHTTPLocationForResource(Ljava/lang/String;Ljava/lang/String;)Ljava/util/regex/Pattern;
    at org.wso2.carbon.dataservices.core.DBDeployer.createAxisOperation(DBDeployer.java:594)
    at org.wso2.carbon.dataservices.core.DBDeployer.createAxisOperationFromDSOperation(DBDeployer.java:532)
    at org.wso2.carbon.dataservices.core.DBDeployer.createDBService(DBDeployer.java:829)
    at org.wso2.carbon.dataservices.core.DBDeployer.processService(DBDeployer.java:1127)
    at org.wso2.carbon.dataservices.core.DBDeployer.deploy(DBDeployer.java:178)
    at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
    at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:810)
    at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144)
    at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377)
    at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254)
    at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371)
    at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59)
    at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67)
    at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:65)
    at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:110)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

The data service xml:

<data disableStreaming="true" name="Jim2">
   <config id="jim2">
      <property name="carbon_datasource_name">MysqlJim</property>
   </config>
   <query id="query" useConfig="jim2">
      <sql>select * from Users</sql>
      <result element="Users" rowName="User">
         <element column="Username" name="Username" xsdType="string"/>
         <element column="Email" name="Email" xsdType="string"/>
         <element column="Password" name="Password" xsdType="string"/>
      </result>
   </query>
   <operation name="operation1">
      <call-query href="query"/>
   </operation>
</data>

Solution

  • I assume here, you have installed DSS features on ESB or any other carbon product. This is because the axis2 jar in the carbon product does not contain the method 'getConstantFromHTTPLocationForResource' but the dataservice core is searching for that method in the dataservice deployment time. This method was introduced by the kernel patch 0005. Download the patch0005 from nexus repo and apply it in the carbon product.