I made some fixes to GD related to exploded mode of webapps. So please verify this again to be sure.
I followed these steps. Start the server with GD and DepSync enabled. Deploy some webapps. Restart the server again and try to access one of the webapp.(this is where i got this error) On Tue, Jul 31, 2012 at 9:45 AM, Reka Thirunavukkarasu <[email protected]>wrote: > Hi > > It is working fine with my local setup. So that i couldn't reproduce the > issue that you have faced. Can you elaborate the steps for me to reproduce > the issue? > > I faced some issues with Ghost deployer when tenant's cleanup and tenant > lazy loading. I have fixed cleanup issues. Will commit it once verify. > > Virtual host is not got loaded with tenant lazy loading. This is because > Ghost deployer deploys Ghost webapps instead of actual webapps when virtual > host request hits. This similar case happens for services as well. > If the artifacts were loaded at-least once before, then the subsequent tenant loading will load them into ghost form. > > Is it possible to make changes in Ghost deployer to deploy actual webapps > and actual services whenever a virtual host request hits the valve? > Why do you need to deploy the actual artifacts in this scenario here? Thanks, Kishanthan. > > Thanks, > Reka > > > On Mon, Jul 30, 2012 at 1:00 PM, Reka Thirunavukkarasu <[email protected]>wrote: > >> Hi >> >> I'll look into this. >> >> Thanks, >> Reka >> >> >> On Mon, Jul 30, 2012 at 12:42 PM, Kishanthan Thangarajah < >> [email protected]> wrote: >> >>> Hi, >>> Please test $subject for webapps. I encountered some issues while >>> testing some webapps on AS with both DepSync and GD enabled. Looks like >>> some issues with getting virtual host info from registry. >>> >>> [2012-07-30 11:26:46,572] INFO >>> {org.wso2.carbon.webapp.mgt.utils.GhostWebappDeployerUtils} - Removing >>> Ghost webapp and loading actual webapp : example.war >>> [2012-07-30 11:26:46,937] INFO >>> {org.wso2.carbon.webapp.mgt.WebApplication} - Unloaded webapp: >>> StandardEngine[Catalina].StandardHost[localhost].StandardContext[/example] >>> [2012-07-30 11:26:49,588] ERROR >>> {org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO} - Failed to check >>> the existence of the resource /_system/governance/hostinfo. Timeout trying >>> to lock table "REG_RESOURCE"; SQL statement: >>> SELECT REG_VERSION FROM REG_RESOURCE WHERE REG_PATH_ID=? AND REG_NAME=? >>> AND REG_TENANT_ID=? [50200-140] >>> org.h2.jdbc.JdbcSQLException: Timeout trying to lock table >>> "REG_RESOURCE"; SQL statement: >>> SELECT REG_VERSION FROM REG_RESOURCE WHERE REG_PATH_ID=? AND REG_NAME=? >>> AND REG_TENANT_ID=? [50200-140] >>> at org.h2.message.DbException.getJdbcSQLException(DbException.java:327) >>> at org.h2.message.DbException.get(DbException.java:167) >>> at org.h2.message.DbException.get(DbException.java:144) >>> at org.h2.table.RegularTable.doLock(RegularTable.java:466) >>> at org.h2.table.RegularTable.lock(RegularTable.java:404) >>> at org.h2.table.TableFilter.lock(TableFilter.java:139) >>> at org.h2.command.dml.Select.queryWithoutCache(Select.java:554) >>> at org.h2.command.dml.Query.query(Query.java:241) >>> at org.h2.command.CommandContainer.query(CommandContainer.java:80) >>> at org.h2.command.Command.executeQuery(Command.java:132) >>> at >>> org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.getVersion(JDBCResourceDAO.java:197) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.resourceExists(JDBCResourceDAO.java:147) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.resourceExists(JDBCResourceDAO.java:156) >>> at >>> org.wso2.carbon.registry.core.jdbc.Repository.resourceExists(Repository.java:159) >>> at >>> org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:644) >>> at >>> org.wso2.carbon.registry.core.caching.CacheBackedRegistry.resourceExists(CacheBackedRegistry.java:201) >>> at >>> org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:624) >>> at >>> org.wso2.carbon.url.mapper.internal.registry.RegistryManager.getHostsFromRegistry(RegistryManager.java:278) >>> at >>> org.wso2.carbon.url.mapper.internal.registry.RegistryManager.getAllMappingsFromRegistry(RegistryManager.java:246) >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getAllMappingsFromRegistry(HostUtil.java:172) >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getMappingsPerWebApp(HostUtil.java:66) >>> at >>> org.wso2.carbon.url.mapper.internal.HotUpdateManager.getMappigsPerWebapp(HotUpdateManager.java:37) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:230) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:181) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:151) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:115) >>> at >>> org.wso2.carbon.webapp.mgt.utils.GhostWebappDeployerUtils.deployActualWebApp(GhostWebappDeployerUtils.java:146) >>> at >>> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.handleWebapp(GhostWebappDeployerValve.java:139) >>> at >>> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.invoke(GhostWebappDeployerValve.java:89) >>> at >>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:129) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) >>> at >>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:49) >>> at >>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) >>> at >>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) >>> at >>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) >>> at >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >>> at java.lang.Thread.run(Thread.java:662) >>> [2012-07-30 11:26:49,594] ERROR >>> {org.wso2.carbon.url.mapper.internal.util.HostUtil} - Failed to get all >>> hosts >>> org.wso2.carbon.registry.core.exceptions.RegistryException: Failed to >>> check the existence of the resource /_system/governance/hostinfo. Timeout >>> trying to lock table "REG_RESOURCE"; SQL statement: >>> SELECT REG_VERSION FROM REG_RESOURCE WHERE REG_PATH_ID=? AND REG_NAME=? >>> AND REG_TENANT_ID=? [50200-140] >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.getVersion(JDBCResourceDAO.java:206) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.resourceExists(JDBCResourceDAO.java:147) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.resourceExists(JDBCResourceDAO.java:156) >>> at >>> org.wso2.carbon.registry.core.jdbc.Repository.resourceExists(Repository.java:159) >>> at >>> org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:644) >>> at >>> org.wso2.carbon.registry.core.caching.CacheBackedRegistry.resourceExists(CacheBackedRegistry.java:201) >>> at >>> org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:624) >>> at >>> org.wso2.carbon.url.mapper.internal.registry.RegistryManager.getHostsFromRegistry(RegistryManager.java:278) >>> at >>> org.wso2.carbon.url.mapper.internal.registry.RegistryManager.getAllMappingsFromRegistry(RegistryManager.java:246) >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getAllMappingsFromRegistry(HostUtil.java:172) >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getMappingsPerWebApp(HostUtil.java:66) >>> at >>> org.wso2.carbon.url.mapper.internal.HotUpdateManager.getMappigsPerWebapp(HotUpdateManager.java:37) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:230) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:181) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:151) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:115) >>> at >>> org.wso2.carbon.webapp.mgt.utils.GhostWebappDeployerUtils.deployActualWebApp(GhostWebappDeployerUtils.java:146) >>> at >>> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.handleWebapp(GhostWebappDeployerValve.java:139) >>> at >>> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.invoke(GhostWebappDeployerValve.java:89) >>> at >>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:129) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) >>> at >>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:49) >>> at >>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) >>> at >>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) >>> at >>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) >>> at >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >>> at java.lang.Thread.run(Thread.java:662) >>> Caused by: org.h2.jdbc.JdbcSQLException: Timeout trying to lock table >>> "REG_RESOURCE"; SQL statement: >>> SELECT REG_VERSION FROM REG_RESOURCE WHERE REG_PATH_ID=? AND REG_NAME=? >>> AND REG_TENANT_ID=? [50200-140] >>> at org.h2.message.DbException.getJdbcSQLException(DbException.java:327) >>> at org.h2.message.DbException.get(DbException.java:167) >>> at org.h2.message.DbException.get(DbException.java:144) >>> at org.h2.table.RegularTable.doLock(RegularTable.java:466) >>> at org.h2.table.RegularTable.lock(RegularTable.java:404) >>> at org.h2.table.TableFilter.lock(TableFilter.java:139) >>> at org.h2.command.dml.Select.queryWithoutCache(Select.java:554) >>> at org.h2.command.dml.Query.query(Query.java:241) >>> at org.h2.command.CommandContainer.query(CommandContainer.java:80) >>> at org.h2.command.Command.executeQuery(Command.java:132) >>> at >>> org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.getVersion(JDBCResourceDAO.java:197) >>> ... 31 more >>> [2012-07-30 11:26:49,596] ERROR >>> {org.wso2.carbon.url.mapper.internal.util.HostUtil} - Failed to get url >>> mappings for the webapp >>> org.wso2.carbon.url.mapper.internal.exception.UrlMapperException: Failed >>> to get all url mappings from the registry >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getAllMappingsFromRegistry(HostUtil.java:175) >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getMappingsPerWebApp(HostUtil.java:66) >>> at >>> org.wso2.carbon.url.mapper.internal.HotUpdateManager.getMappigsPerWebapp(HotUpdateManager.java:37) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:230) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:181) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:151) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:115) >>> at >>> org.wso2.carbon.webapp.mgt.utils.GhostWebappDeployerUtils.deployActualWebApp(GhostWebappDeployerUtils.java:146) >>> at >>> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.handleWebapp(GhostWebappDeployerValve.java:139) >>> at >>> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.invoke(GhostWebappDeployerValve.java:89) >>> at >>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:129) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) >>> at >>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:49) >>> at >>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) >>> at >>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) >>> at >>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) >>> at >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >>> at java.lang.Thread.run(Thread.java:662) >>> Caused by: org.wso2.carbon.registry.core.exceptions.RegistryException: >>> Failed to check the existence of the resource /_system/governance/hostinfo. >>> Timeout trying to lock table "REG_RESOURCE"; SQL statement: >>> SELECT REG_VERSION FROM REG_RESOURCE WHERE REG_PATH_ID=? AND REG_NAME=? >>> AND REG_TENANT_ID=? [50200-140] >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.getVersion(JDBCResourceDAO.java:206) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.resourceExists(JDBCResourceDAO.java:147) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.resourceExists(JDBCResourceDAO.java:156) >>> at >>> org.wso2.carbon.registry.core.jdbc.Repository.resourceExists(Repository.java:159) >>> at >>> org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:644) >>> at >>> org.wso2.carbon.registry.core.caching.CacheBackedRegistry.resourceExists(CacheBackedRegistry.java:201) >>> at >>> org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:624) >>> at >>> org.wso2.carbon.url.mapper.internal.registry.RegistryManager.getHostsFromRegistry(RegistryManager.java:278) >>> at >>> org.wso2.carbon.url.mapper.internal.registry.RegistryManager.getAllMappingsFromRegistry(RegistryManager.java:246) >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getAllMappingsFromRegistry(HostUtil.java:172) >>> ... 22 more >>> Caused by: org.h2.jdbc.JdbcSQLException: Timeout trying to lock table >>> "REG_RESOURCE"; SQL statement: >>> SELECT REG_VERSION FROM REG_RESOURCE WHERE REG_PATH_ID=? AND REG_NAME=? >>> AND REG_TENANT_ID=? [50200-140] >>> at org.h2.message.DbException.getJdbcSQLException(DbException.java:327) >>> at org.h2.message.DbException.get(DbException.java:167) >>> at org.h2.message.DbException.get(DbException.java:144) >>> at org.h2.table.RegularTable.doLock(RegularTable.java:466) >>> at org.h2.table.RegularTable.lock(RegularTable.java:404) >>> at org.h2.table.TableFilter.lock(TableFilter.java:139) >>> at org.h2.command.dml.Select.queryWithoutCache(Select.java:554) >>> at org.h2.command.dml.Query.query(Query.java:241) >>> at org.h2.command.CommandContainer.query(CommandContainer.java:80) >>> at org.h2.command.Command.executeQuery(Command.java:132) >>> at >>> org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:96) >>> at >>> org.wso2.carbon.registry.core.jdbc.dao.JDBCResourceDAO.getVersion(JDBCResourceDAO.java:197) >>> ... 31 more >>> [2012-07-30 11:26:49,598] ERROR >>> {org.wso2.carbon.url.mapper.internal.HotUpdateManager} - error while >>> retrieving from registry >>> org.wso2.carbon.url.mapper.internal.exception.UrlMapperException: Failed >>> to get url mappings for the webapp /example >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getMappingsPerWebApp(HostUtil.java:79) >>> at >>> org.wso2.carbon.url.mapper.internal.HotUpdateManager.getMappigsPerWebapp(HotUpdateManager.java:37) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWebappDeployment(TomcatGenericWebappsDeployer.java:230) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleWarWebappDeployment(TomcatGenericWebappsDeployer.java:181) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.handleHotDeployment(TomcatGenericWebappsDeployer.java:151) >>> at >>> org.wso2.carbon.webapp.mgt.TomcatGenericWebappsDeployer.deploy(TomcatGenericWebappsDeployer.java:115) >>> at >>> org.wso2.carbon.webapp.mgt.utils.GhostWebappDeployerUtils.deployActualWebApp(GhostWebappDeployerUtils.java:146) >>> at >>> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.handleWebapp(GhostWebappDeployerValve.java:139) >>> at >>> org.wso2.carbon.webapp.mgt.GhostWebappDeployerValve.invoke(GhostWebappDeployerValve.java:89) >>> at >>> org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:129) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:156) >>> at >>> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) >>> at >>> org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:49) >>> at >>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) >>> at >>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) >>> at >>> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) >>> at >>> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) >>> at >>> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1653) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) >>> at >>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) >>> at java.lang.Thread.run(Thread.java:662) >>> Caused by: >>> org.wso2.carbon.url.mapper.internal.exception.UrlMapperException: Failed to >>> get all url mappings from the registry >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getAllMappingsFromRegistry(HostUtil.java:175) >>> at >>> org.wso2.carbon.url.mapper.internal.util.HostUtil.getMappingsPerWebApp(HostUtil.java:66) >>> ... 21 more >>> >>> Thanks, >>> Kishanthan. >>> >>> -- >>> *Kishanthan Thangarajah* >>> Software Engineer, >>> Development Technologies Team, >>> WSO2, Inc. >>> lean.enterprise.middleware >>> >>> Mobile - +94773426635 >>> Blog - *http://kishanthan.wordpress.com* >>> Twitter - *http://twitter.com/kishanthan* >>> >>> >> > -- *Kishanthan Thangarajah* Software Engineer, Development Technologies Team, WSO2, Inc. lean.enterprise.middleware Mobile - +94773426635 Blog - *http://kishanthan.wordpress.com* Twitter - *http://twitter.com/kishanthan*
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
