-1down votefavorite | Can someone help me with an issue i am having with my SOAP web services. It's hosted on Apache Servicemix and using PostgresSQL as database and using hibernate as ORM framework . I have a validateProject request which internally calls another webservice validateShape hosted on glassfish server. When i run validateProject with invalid data for the first time it gives correct response saying "validation failed" . But once i correct the request and run it again the response still says validation failed instead of passing . But strange part is the response that comes back from internal validateShape request comes back as passed when i run it from SOAPUI separately. Here is the code snippet fort the validateProject method in my webservice code. |
public List<String> validateProject(String project, String format) {
ValidateSaaResponse response = null;
IntegrationModuleGetService getClient;
try {
project = SAAMessageUtils.replaceDistanceUOM(project, false);
ValidateSaaRequest request = new ValidateSaaRequest();
request.setProject(project);
response = getClient.validateShape(request); // This is another webservice call with in validateProject request
} catch (Fault e) {
LOG.error("Failed to validate airspace", e);
}
List<String> result = new ArrayList<String>();
if ("designerValidation".equals(format)) {
if (response != null && !response.isSuccess())
result.add(response.getMessage());
} else {
if (response != null)
result.add(response.getMessage());
}
return result;
}
I looked into webservice code to check if there is any caching happening. Since we are using hibernate in our project i noticed both query_cache and second level cache were being used and they are set to true. Also ehcache is also being used. This is the configuration and ehcache xmls.
<property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop> <prop key="hibernate.show_sql">false</prop> <prop key="hibernate.format_sql">true</prop> <!
I set both query cache and second level cache to false and changed the ehcache configuration file parameters timeToLiveSeconds and timeToIdleSeconds to set to like 2 seconds but the issue is not resolved.
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false" monitoring="autodetect" dynamicConfig="true">