public Element execute(LocalServiceRequest request) throws Exception { ServiceContext context = new ServiceContext( request.getService(), getApplicationContext(), getXmlCacheManager(), getMonitorManager(), getProviderManager(), getSerialFactory(), getProfileManager(), htContexts) { /* This override causes database connections to be consumed..... Comment out for now. sppigot May, 2014 public ResourceManager getResourceManager() { return new ResourceManager(getMonitorManager(), getProviderManager()) { @Override public synchronized void abort() throws Exception { } @Override public synchronized void close() throws Exception { } @Override public synchronized void close(String name, Object resource) throws Exception { } @Override public synchronized void abort(String name, Object resource) throws Exception { } @Override protected void openMetrics(Object resource) { } @Override protected void closeMetrics(Object resource) { } }; } */ }; UserSession session = userSession; if (userSession == null) { session = new UserSession(); } try { servlet.getEngine().getServiceManager().dispatch(request, session, context); } catch (Exception e) { Log.error(Log.XLINK_PROCESSOR, "Failed to parse result xml" + request.getService()); throw new ServiceExecutionFailedException(request.getService(), e); } finally { // set old context back as thread local setAsThreadLocal(); } try { return request.getResult(); } catch (Exception e) { Log.error( Log.XLINK_PROCESSOR, "Failed to parse result xml from service:" + request.getService() + "\n" + request.getResultString()); throw new ServiceExecutionFailedException(request.getService(), e); } }
public boolean isServletInitialized() { if (servlet != null) return servlet.isInitialized(); else return true; // Jeeves not running in servlet container eg for testing }