diff --git a/src/main/java/jp/sf/fess/action/IndexAction.java b/src/main/java/jp/sf/fess/action/IndexAction.java
index 0d8a3185d19a31340f7992b4b07e51c1b5030bb9..d9a049cfefd10d2c9624a6646ffdd0e674aa8355 100644
--- a/src/main/java/jp/sf/fess/action/IndexAction.java
+++ b/src/main/java/jp/sf/fess/action/IndexAction.java
@@ -67,6 +67,7 @@ import jp.sf.fess.screenshot.ScreenShotManager;
 import jp.sf.fess.service.FavoriteLogService;
 import jp.sf.fess.service.SearchService;
 import jp.sf.fess.suggest.Suggester;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.FacetResponse;
 import jp.sf.fess.util.MoreLikeThisResponse;
 import jp.sf.fess.util.QueryResponseList;
@@ -79,7 +80,6 @@ import org.codelibs.core.util.DynamicProperties;
 import org.codelibs.sastruts.core.exception.SSCActionMessagesException;
 import org.codelibs.solr.lib.exception.SolrLibQueryException;
 import org.seasar.framework.beans.util.Beans;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.container.annotation.tiger.Binding;
 import org.seasar.framework.container.annotation.tiger.BindingType;
 import org.seasar.framework.util.InputStreamUtil;
@@ -309,8 +309,8 @@ public class IndexAction {
                 Constants.SEARCH_LOG_PROPERTY, Constants.TRUE))) {
             final String userSessionId = userInfoHelper.getUserCode();
             if (userSessionId != null) {
-                final SearchLogHelper searchLogHelper = SingletonS2Container
-                        .getComponent(SearchLogHelper.class);
+                final SearchLogHelper searchLogHelper = ComponentUtil
+                        .getSearchLogHelper();
                 final ClickLog clickLog = new ClickLog();
                 clickLog.setUrl(url);
                 clickLog.setRequestedTime(new Timestamp(System
@@ -325,8 +325,8 @@ public class IndexAction {
         if (isFileSystemPath(url)) {
             if (Constants.TRUE.equals(crawlerProperties.getProperty(
                     Constants.SEARCH_FILE_PROXY_PROPERTY, Constants.TRUE))) {
-                final CrawlingConfigHelper crawlingConfigHelper = SingletonS2Container
-                        .getComponent(CrawlingConfigHelper.class);
+                final CrawlingConfigHelper crawlingConfigHelper = ComponentUtil
+                        .getCrawlingConfigHelper();
                 try {
                     crawlingConfigHelper.writeContent(doc);
                     return null;
@@ -575,8 +575,8 @@ public class IndexAction {
         }
 
         try {
-            final HotSearchWordHelper hotSearchWordHelper = SingletonS2Container
-                    .getComponent(HotSearchWordHelper.class);
+            final HotSearchWordHelper hotSearchWordHelper = ComponentUtil
+                    .getHotSearchWordHelper();
             final List<String> hotSearchWordList = hotSearchWordHelper
                     .getHotSearchWordList(range);
             WebApiUtil.setObject("hotSearchWordList", hotSearchWordList);
@@ -635,8 +635,8 @@ public class IndexAction {
                 return null;
             }
 
-            final DocumentHelper documentHelper = SingletonS2Container
-                    .getComponent("documentHelper");
+            final DocumentHelper documentHelper = ComponentUtil
+                    .getDocumentHelper();
             final Object count = doc.get(systemHelper.favoriteCountField);
             if (count instanceof Long) {
                 documentHelper.update(indexForm.docId,
@@ -840,8 +840,8 @@ public class IndexAction {
         if (searchLogSupport) {
             final Timestamp now = new Timestamp(rt);
 
-            final SearchLogHelper searchLogHelper = SingletonS2Container
-                    .getComponent(SearchLogHelper.class);
+            final SearchLogHelper searchLogHelper = ComponentUtil
+                    .getSearchLogHelper();
             final SearchLog searchLog = new SearchLog();
 
             String userCode = null;
diff --git a/src/main/java/jp/sf/fess/action/MobileAction.java b/src/main/java/jp/sf/fess/action/MobileAction.java
index be1810ca0dbafae932728a23b46b9b6846c100e8..79f2272ef44a6ce7f0f6ec3d0e0f8259d7853725 100644
--- a/src/main/java/jp/sf/fess/action/MobileAction.java
+++ b/src/main/java/jp/sf/fess/action/MobileAction.java
@@ -36,13 +36,13 @@ import jp.sf.fess.helper.QueryHelper;
 import jp.sf.fess.helper.SearchLogHelper;
 import jp.sf.fess.helper.UserInfoHelper;
 import jp.sf.fess.service.SearchService;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.QueryResponseList;
 
 import org.apache.commons.lang.StringUtils;
 import org.codelibs.core.util.DynamicProperties;
 import org.codelibs.sastruts.core.exception.SSCActionMessagesException;
 import org.seasar.framework.beans.util.Beans;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 import org.seasar.struts.annotation.ActionForm;
 import org.seasar.struts.annotation.Execute;
@@ -181,8 +181,8 @@ public class MobileAction {
         // search log
         if (Constants.TRUE.equals(crawlerProperties.getProperty(
                 Constants.SEARCH_LOG_PROPERTY, Constants.TRUE))) {
-            final SearchLogHelper searchLogHelper = SingletonS2Container
-                    .getComponent(SearchLogHelper.class);
+            final SearchLogHelper searchLogHelper = ComponentUtil
+                    .getSearchLogHelper();
             final Timestamp now = new Timestamp(System.currentTimeMillis());
             final SearchLog searchLog = new SearchLog();
 
diff --git a/src/main/java/jp/sf/fess/action/admin/DocumentAction.java b/src/main/java/jp/sf/fess/action/admin/DocumentAction.java
index 3a7345d7229164df3525555da22f0c1975259417..8811f139144fb9b80cd714957427cb53983951f7 100644
--- a/src/main/java/jp/sf/fess/action/admin/DocumentAction.java
+++ b/src/main/java/jp/sf/fess/action/admin/DocumentAction.java
@@ -31,6 +31,7 @@ import jp.sf.fess.form.admin.DocumentForm;
 import jp.sf.fess.helper.JobHelper;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.helper.WebManagementHelper;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrQuery.ORDER;
@@ -44,7 +45,6 @@ import org.codelibs.solr.lib.SolrGroupManager;
 import org.codelibs.solr.lib.SolrLibConstants;
 import org.codelibs.solr.lib.policy.QueryType;
 import org.codelibs.solr.lib.policy.impl.StatusPolicyImpl;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 import org.seasar.struts.annotation.ActionForm;
 import org.seasar.struts.annotation.Execute;
@@ -84,8 +84,8 @@ public class DocumentAction implements Serializable {
     protected String showIndex(final boolean redirect) {
         final Map<String, DynamicProperties> groupPropMap = new HashMap<String, DynamicProperties>();
         for (final String groupName : solrGroupManager.getSolrGroupNames()) {
-            final DynamicProperties props = SingletonS2Container
-                    .getComponent(groupName + "Properties");
+            final DynamicProperties props = ComponentUtil
+                    .getSolrGroupProperties(groupName);
             if (props != null) {
                 groupPropMap.put(groupName, props);
             }
diff --git a/src/main/java/jp/sf/fess/action/admin/LogAction.java b/src/main/java/jp/sf/fess/action/admin/LogAction.java
index 3e666d73d21ab0182bc3cfaf0207b407f1c03783..288e4c69c9de9e2d0753bfd38bf116b646490df4 100644
--- a/src/main/java/jp/sf/fess/action/admin/LogAction.java
+++ b/src/main/java/jp/sf/fess/action/admin/LogAction.java
@@ -36,10 +36,10 @@ import javax.annotation.Resource;
 import jp.sf.fess.Constants;
 import jp.sf.fess.form.admin.LogForm;
 import jp.sf.fess.helper.SystemHelper;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.codec.binary.Base64;
 import org.codelibs.sastruts.core.exception.SSCActionMessagesException;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 import org.seasar.struts.annotation.ActionForm;
 import org.seasar.struts.annotation.Execute;
@@ -72,8 +72,8 @@ public class LogAction implements Serializable {
 
     @Execute(validator = true, input = "index", urlPattern = "download/{logFileName}")
     public String download() {
-        final String logFilePath = SingletonS2Container.getComponent(
-                SystemHelper.class).getLogFilePath();
+        final String logFilePath = ComponentUtil.getSystemHelper()
+                .getLogFilePath();
         if (StringUtil.isNotBlank(logFilePath)) {
             final File file = new File(logFilePath);
             final File parentDir = file.getParentFile();
@@ -104,8 +104,8 @@ public class LogAction implements Serializable {
 
     public List<Map<String, Object>> getLogFileItems() {
         final List<Map<String, Object>> logFileItems = new ArrayList<Map<String, Object>>();
-        final String logFilePath = SingletonS2Container.getComponent(
-                SystemHelper.class).getLogFilePath();
+        final String logFilePath = ComponentUtil.getSystemHelper()
+                .getLogFilePath();
         if (StringUtil.isNotBlank(logFilePath)) {
             try {
                 final File file = new File(logFilePath);
diff --git a/src/main/java/jp/sf/fess/action/admin/SystemAction.java b/src/main/java/jp/sf/fess/action/admin/SystemAction.java
index 2b6137814e0d9d0fac0de365e48ab3228eca8a79..3c5a1baaed2c08a7ac5a01f82bda625bc91657c2 100644
--- a/src/main/java/jp/sf/fess/action/admin/SystemAction.java
+++ b/src/main/java/jp/sf/fess/action/admin/SystemAction.java
@@ -33,6 +33,7 @@ import jp.sf.fess.helper.JobHelper;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.helper.WebManagementHelper;
 import jp.sf.fess.service.ScheduledJobService;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.codelibs.core.util.DynamicProperties;
 import org.codelibs.sastruts.core.annotation.Token;
@@ -42,7 +43,6 @@ import org.codelibs.solr.lib.SolrGroupManager;
 import org.codelibs.solr.lib.SolrLibConstants;
 import org.codelibs.solr.lib.policy.QueryType;
 import org.codelibs.solr.lib.policy.impl.StatusPolicyImpl;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 import org.seasar.struts.annotation.ActionForm;
 import org.seasar.struts.annotation.Execute;
@@ -74,6 +74,9 @@ public class SystemAction implements Serializable {
     @Resource
     protected JobHelper jobHelper;
 
+    @Resource
+    protected ScheduledJobService scheduledJobService;
+
     private boolean executed = false;
 
     public String getHelpLink() {
@@ -83,8 +86,8 @@ public class SystemAction implements Serializable {
     protected String showIndex(final boolean redirect) {
         final Map<String, DynamicProperties> groupPropMap = new HashMap<String, DynamicProperties>();
         for (final String groupName : solrGroupManager.getSolrGroupNames()) {
-            final DynamicProperties props = SingletonS2Container
-                    .getComponent(groupName + "Properties");
+            final DynamicProperties props = ComponentUtil
+                    .getSolrGroupProperties(groupName);
             if (props != null) {
                 groupPropMap.put(groupName, props);
             }
@@ -163,8 +166,8 @@ public class SystemAction implements Serializable {
         // load solr group properties
         final Map<String, DynamicProperties> groupPropMap = new HashMap<String, DynamicProperties>();
         for (final String groupName : solrGroupManager.getSolrGroupNames()) {
-            final DynamicProperties props = SingletonS2Container
-                    .getComponent(groupName + "Properties");
+            final DynamicProperties props = ComponentUtil
+                    .getSolrGroupProperties(groupName);
             if (props != null) {
                 groupPropMap.put(groupName, props);
             }
@@ -221,8 +224,6 @@ public class SystemAction implements Serializable {
         final SolrGroup solrGroup = solrGroupManager.getSolrGroup(groupName);
         if (solrGroup != null) {
             if (!jobHelper.isCrawlProcessRunning()) {
-                final ScheduledJobService scheduledJobService = SingletonS2Container
-                        .getComponent(ScheduledJobService.class);
                 final List<ScheduledJob> scheduledJobList = scheduledJobService
                         .getCrawloerJobList();
                 for (final ScheduledJob scheduledJob : scheduledJobList) {
diff --git a/src/main/java/jp/sf/fess/action/admin/WizardAction.java b/src/main/java/jp/sf/fess/action/admin/WizardAction.java
index 4520c946d0b808b981c43a74cee607f7207d969d..f88f41c83741168eaae48d8d7f9267cfc71a9c5f 100644
--- a/src/main/java/jp/sf/fess/action/admin/WizardAction.java
+++ b/src/main/java/jp/sf/fess/action/admin/WizardAction.java
@@ -40,12 +40,12 @@ import jp.sf.fess.service.BrowserTypeService;
 import jp.sf.fess.service.FileCrawlingConfigService;
 import jp.sf.fess.service.ScheduledJobService;
 import jp.sf.fess.service.WebCrawlingConfigService;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.lang.StringUtils;
 import org.codelibs.core.util.DynamicProperties;
 import org.codelibs.sastruts.core.annotation.Token;
 import org.codelibs.sastruts.core.exception.SSCActionMessagesException;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 import org.seasar.robot.util.CharUtil;
 import org.seasar.struts.annotation.ActionForm;
@@ -81,6 +81,9 @@ public class WizardAction implements Serializable {
     @Resource
     protected JobHelper jobHelper;
 
+    @Resource
+    protected ScheduledJobService scheduledJobService;
+
     public String getHelpLink() {
         return systemHelper.getHelpLink("wizard");
     }
@@ -193,8 +196,7 @@ public class WizardAction implements Serializable {
                 wConfig.setUrls(configPath);
                 wConfig.setUserAgent(getDefaultString(
                         "default.config.web.userAgent",
-                        (String) SingletonS2Container
-                                .getComponent("userAgentName")));
+                        ComponentUtil.getUserAgentName()));
 
                 if (!browserTypeIdList.isEmpty()) {
                     wConfig.setBrowserTypeIds(browserTypeIdList
@@ -329,8 +331,6 @@ public class WizardAction implements Serializable {
     @Execute(validator = false)
     public String startCrawling() {
         if (!jobHelper.isCrawlProcessRunning()) {
-            final ScheduledJobService scheduledJobService = SingletonS2Container
-                    .getComponent(ScheduledJobService.class);
             final List<ScheduledJob> scheduledJobList = scheduledJobService
                     .getCrawloerJobList();
             for (final ScheduledJob scheduledJob : scheduledJobList) {
diff --git a/src/main/java/jp/sf/fess/api/BaseApiManager.java b/src/main/java/jp/sf/fess/api/BaseApiManager.java
index 102695ed28cbedfd3cc6bb6df219e6e3fcb3d70b..e30f4d247788a33f98310396eb639137ecdebdc1 100644
--- a/src/main/java/jp/sf/fess/api/BaseApiManager.java
+++ b/src/main/java/jp/sf/fess/api/BaseApiManager.java
@@ -16,11 +16,6 @@
 
 package jp.sf.fess.api;
 
-import jp.sf.fess.helper.LabelTypeHelper;
-import jp.sf.fess.helper.QueryHelper;
-
-import org.codelibs.core.util.DynamicProperties;
-import org.seasar.framework.container.SingletonS2Container;
 
 public class BaseApiManager {
     protected static final String FAVORITES_API = "/favoritesApi";
@@ -68,15 +63,4 @@ public class BaseApiManager {
         }
     }
 
-    protected DynamicProperties getCrawlerProperties() {
-        return SingletonS2Container.getComponent("crawlerProperties");
-    }
-
-    protected QueryHelper getQueryHelper() {
-        return SingletonS2Container.getComponent("queryHelper");
-    }
-
-    protected LabelTypeHelper getLabelTypeHelper() {
-        return SingletonS2Container.getComponent("labelTypeHelper");
-    }
 }
\ No newline at end of file
diff --git a/src/main/java/jp/sf/fess/api/json/JsonApiManager.java b/src/main/java/jp/sf/fess/api/json/JsonApiManager.java
index 11da7900d59111845cf969d92e91b6c67daa0435..fef72b1eb5ad7f5e301e29fe95c63e22a4c43968 100644
--- a/src/main/java/jp/sf/fess/api/json/JsonApiManager.java
+++ b/src/main/java/jp/sf/fess/api/json/JsonApiManager.java
@@ -38,6 +38,7 @@ import jp.sf.fess.db.allcommon.CDef;
 import jp.sf.fess.entity.FieldAnalysisResponse;
 import jp.sf.fess.entity.SuggestResponse;
 import jp.sf.fess.entity.SuggestResponse.SuggestResponseList;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.FacetResponse;
 import jp.sf.fess.util.FacetResponse.Field;
 import jp.sf.fess.util.MoreLikeThisResponse;
@@ -60,8 +61,8 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
 
     @Override
     public boolean matches(final HttpServletRequest request) {
-        if (Constants.FALSE.equals(getCrawlerProperties().getProperty(
-                Constants.WEB_API_JSON_PROPERTY, Constants.TRUE))) {
+        if (Constants.FALSE.equals(ComponentUtil.getCrawlerProperties()
+                .getProperty(Constants.WEB_API_JSON_PROPERTY, Constants.TRUE))) {
             return false;
         }
 
@@ -168,7 +169,8 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
                         final String name = entry.getKey();
                         if (StringUtil.isNotBlank(name)
                                 && entry.getValue() != null
-                                && getQueryHelper().isApiResponseField(name)) {
+                                && ComponentUtil.getQueryHelper()
+                                        .isApiResponseField(name)) {
                             if (!first2) {
                                 buf.append(',');
                             } else {
@@ -303,8 +305,8 @@ public class JsonApiManager extends BaseApiManager implements WebApiManager {
         String errMsg = Constants.EMPTY_STRING;
         final StringBuilder buf = new StringBuilder(255);
         try {
-            final List<Map<String, String>> labelTypeItems = getLabelTypeHelper()
-                    .getLabelTypeItemList();
+            final List<Map<String, String>> labelTypeItems = ComponentUtil
+                    .getLabelTypeHelper().getLabelTypeItemList();
             buf.append("\"recordCount\":");
             buf.append(labelTypeItems.size());
             if (!labelTypeItems.isEmpty()) {
diff --git a/src/main/java/jp/sf/fess/api/xml/XmlApiManager.java b/src/main/java/jp/sf/fess/api/xml/XmlApiManager.java
index fe973aa2a65566ae0c84c96280ec8f2de6408748..a176aed275eba9829948bfd0f516b54b61f0ebdc 100644
--- a/src/main/java/jp/sf/fess/api/xml/XmlApiManager.java
+++ b/src/main/java/jp/sf/fess/api/xml/XmlApiManager.java
@@ -37,6 +37,7 @@ import jp.sf.fess.db.allcommon.CDef;
 import jp.sf.fess.entity.FieldAnalysisResponse;
 import jp.sf.fess.entity.SuggestResponse;
 import jp.sf.fess.entity.SuggestResponse.SuggestResponseList;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.FacetResponse;
 import jp.sf.fess.util.FacetResponse.Field;
 import jp.sf.fess.util.MoreLikeThisResponse;
@@ -57,8 +58,8 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
 
     @Override
     public boolean matches(final HttpServletRequest request) {
-        if (Constants.FALSE.equals(getCrawlerProperties().getProperty(
-                Constants.WEB_API_XML_PROPERTY, Constants.TRUE))) {
+        if (Constants.FALSE.equals(ComponentUtil.getCrawlerProperties()
+                .getProperty(Constants.WEB_API_XML_PROPERTY, Constants.TRUE))) {
             return false;
         }
 
@@ -148,8 +149,10 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
                 for (final Map.Entry<String, Object> entry : document
                         .entrySet()) {
                     final String name = entry.getKey();
-                    if (StringUtil.isNotBlank(name) && entry.getValue() != null
-                            && getQueryHelper().isApiResponseField(name)) {
+                    if (StringUtil.isNotBlank(name)
+                            && entry.getValue() != null
+                            && ComponentUtil.getQueryHelper()
+                                    .isApiResponseField(name)) {
                         final String tagName = convertTagName(name);
                         buf.append('<');
                         buf.append(tagName);
@@ -255,8 +258,8 @@ public class XmlApiManager extends BaseApiManager implements WebApiManager {
         String errMsg = Constants.EMPTY_STRING;
         final StringBuilder buf = new StringBuilder(255);
         try {
-            final List<Map<String, String>> labelTypeItems = getLabelTypeHelper()
-                    .getLabelTypeItemList();
+            final List<Map<String, String>> labelTypeItems = ComponentUtil
+                    .getLabelTypeHelper().getLabelTypeItemList();
             buf.append("<record-count>");
             buf.append(labelTypeItems.size());
             buf.append("</record-count>");
diff --git a/src/main/java/jp/sf/fess/db/exentity/FailureUrl.java b/src/main/java/jp/sf/fess/db/exentity/FailureUrl.java
index 66959bdf79ca2469440dbaf378a75b5a85a49924..aeefb830cc0d7eb2b8283e4526c03d590f84b946 100644
--- a/src/main/java/jp/sf/fess/db/exentity/FailureUrl.java
+++ b/src/main/java/jp/sf/fess/db/exentity/FailureUrl.java
@@ -20,9 +20,7 @@ import java.text.SimpleDateFormat;
 
 import jp.sf.fess.Constants;
 import jp.sf.fess.db.bsentity.BsFailureUrl;
-import jp.sf.fess.helper.CrawlingConfigHelper;
-
-import org.seasar.framework.container.SingletonS2Container;
+import jp.sf.fess.util.ComponentUtil;
 
 /**
  * The entity of FAILURE_URL.
@@ -47,9 +45,8 @@ public class FailureUrl extends BsFailureUrl {
     }
 
     public String getWebConfigName() {
-        final CrawlingConfig crawlingConfig = SingletonS2Container
-                .getComponent(CrawlingConfigHelper.class).getCrawlingConfig(
-                        getConfigId());
+        final CrawlingConfig crawlingConfig = ComponentUtil
+                .getCrawlingConfigHelper().getCrawlingConfig(getConfigId());
         if (crawlingConfig != null) {
             return crawlingConfig.getName();
         }
@@ -57,9 +54,8 @@ public class FailureUrl extends BsFailureUrl {
     }
 
     public String getFileConfigName() {
-        final CrawlingConfig crawlingConfig = SingletonS2Container
-                .getComponent(CrawlingConfigHelper.class).getCrawlingConfig(
-                        getConfigId());
+        final CrawlingConfig crawlingConfig = ComponentUtil
+                .getCrawlingConfigHelper().getCrawlingConfig(getConfigId());
         if (crawlingConfig != null) {
             return crawlingConfig.getName();
         }
@@ -67,9 +63,8 @@ public class FailureUrl extends BsFailureUrl {
     }
 
     public String getDataConfigName() {
-        final CrawlingConfig crawlingConfig = SingletonS2Container
-                .getComponent(CrawlingConfigHelper.class).getCrawlingConfig(
-                        getConfigId());
+        final CrawlingConfig crawlingConfig = ComponentUtil
+                .getCrawlingConfigHelper().getCrawlingConfig(getConfigId());
         if (crawlingConfig != null) {
             return crawlingConfig.getName();
         }
diff --git a/src/main/java/jp/sf/fess/db/exentity/FileCrawlingConfig.java b/src/main/java/jp/sf/fess/db/exentity/FileCrawlingConfig.java
index df97b8a7a3eab685227f07092849fe81b28ab758..4f7d21f5cf72de468cfc8caf50a9adefa1c03c1f 100644
--- a/src/main/java/jp/sf/fess/db/exentity/FileCrawlingConfig.java
+++ b/src/main/java/jp/sf/fess/db/exentity/FileCrawlingConfig.java
@@ -27,6 +27,7 @@ import jp.sf.fess.Constants;
 import jp.sf.fess.db.bsentity.BsFileCrawlingConfig;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.service.FileAuthenticationService;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.ParameterUtil;
 
 import org.seasar.framework.container.SingletonS2Container;
@@ -166,8 +167,7 @@ public class FileCrawlingConfig extends BsFileCrawlingConfig implements
     }
 
     protected synchronized void initDocPathPattern() {
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
 
         if (includedDocPathPatterns == null) {
             if (StringUtil.isNotBlank(getIncludedDocPaths())) {
diff --git a/src/main/java/jp/sf/fess/db/exentity/ScheduledJob.java b/src/main/java/jp/sf/fess/db/exentity/ScheduledJob.java
index f8e2f8c99a5a990e655a123663625dcaa551086c..58a0f30226a1db653ad82f5949e4907e1f55cbc3 100644
--- a/src/main/java/jp/sf/fess/db/exentity/ScheduledJob.java
+++ b/src/main/java/jp/sf/fess/db/exentity/ScheduledJob.java
@@ -18,10 +18,8 @@ package jp.sf.fess.db.exentity;
 
 import jp.sf.fess.Constants;
 import jp.sf.fess.db.bsentity.BsScheduledJob;
-import jp.sf.fess.helper.JobHelper;
 import jp.sf.fess.job.TriggeredJob;
-
-import org.seasar.framework.container.SingletonS2Container;
+import jp.sf.fess.util.ComponentUtil;
 
 /**
  * The entity of SCHEDULED_JOB.
@@ -49,8 +47,7 @@ public class ScheduledJob extends BsScheduledJob {
     }
 
     public boolean isRunning() {
-        return SingletonS2Container.getComponent(JobHelper.class)
-                .getJobExecutoer(getId()) != null;
+        return ComponentUtil.getJobHelper().getJobExecutoer(getId()) != null;
     }
 
     public void start() {
diff --git a/src/main/java/jp/sf/fess/ds/impl/AbstractDataStoreImpl.java b/src/main/java/jp/sf/fess/ds/impl/AbstractDataStoreImpl.java
index 533f6fbeda3d7e76e85dcbad65bf492b4d14ac2e..d4a4798a7c711b665a6db75538c7a5a36afc7b71 100644
--- a/src/main/java/jp/sf/fess/ds/impl/AbstractDataStoreImpl.java
+++ b/src/main/java/jp/sf/fess/ds/impl/AbstractDataStoreImpl.java
@@ -29,8 +29,8 @@ import jp.sf.fess.ds.IndexUpdateCallback;
 import jp.sf.fess.helper.CrawlingSessionHelper;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.taglib.FessFunctions;
+import jp.sf.fess.util.ComponentUtil;
 
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.OgnlUtil;
 import org.seasar.framework.util.StringUtil;
 import org.slf4j.Logger;
@@ -58,11 +58,10 @@ public abstract class AbstractDataStoreImpl implements DataStore {
                 .getHandlerParameterMap();
         final Map<String, String> configScriptMap = config
                 .getHandlerScriptMap();
-        final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                .getComponent("crawlingSessionHelper");
+        final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                .getCrawlingSessionHelper();
         final Date documentExpires = crawlingSessionHelper.getDocumentExpires();
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
 
         initParamMap.putAll(configParamMap);
         final Map<String, String> paramMap = initParamMap;
diff --git a/src/main/java/jp/sf/fess/ds/impl/IndexUpdateCallbackImpl.java b/src/main/java/jp/sf/fess/ds/impl/IndexUpdateCallbackImpl.java
index a59b6314dc95807c5d29fb93a5e6aedef22411ca..9f84c39ab980d2738d6db9b632ae8d7659c5806e 100644
--- a/src/main/java/jp/sf/fess/ds/impl/IndexUpdateCallbackImpl.java
+++ b/src/main/java/jp/sf/fess/ds/impl/IndexUpdateCallbackImpl.java
@@ -27,10 +27,10 @@ import jp.sf.fess.ds.IndexUpdateCallback;
 import jp.sf.fess.helper.CrawlingSessionHelper;
 import jp.sf.fess.helper.SearchLogHelper;
 import jp.sf.fess.helper.SystemHelper;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.solr.common.SolrInputDocument;
 import org.codelibs.solr.lib.SolrGroup;
-import org.seasar.framework.container.SingletonS2Container;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -71,8 +71,8 @@ public class IndexUpdateCallbackImpl implements IndexUpdateCallback {
             throw new FessSystemException("url is null. dataMap=" + dataMap);
         }
 
-        final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                .getComponent(CrawlingSessionHelper.class);
+        final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                .getCrawlingSessionHelper();
         dataMap.put("id", crawlingSessionHelper.generateId(dataMap));
 
         final SolrInputDocument doc = createSolrDocument(dataMap);
@@ -132,8 +132,7 @@ public class IndexUpdateCallbackImpl implements IndexUpdateCallback {
         }
 
         if (!dataMap.containsKey(Constants.DOC_ID)) {
-            final SystemHelper systemHelper = SingletonS2Container
-                    .getComponent("systemHelper");
+            final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
             doc.addField(Constants.DOC_ID, systemHelper.generateDocId(dataMap));
         }
 
@@ -180,10 +179,9 @@ public class IndexUpdateCallbackImpl implements IndexUpdateCallback {
 
     protected void addClickCountField(final SolrInputDocument doc,
             final String url) {
-        final SearchLogHelper searchLogHelper = SingletonS2Container
-                .getComponent(SearchLogHelper.class);
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SearchLogHelper searchLogHelper = ComponentUtil
+                .getSearchLogHelper();
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         final int count = searchLogHelper.getClickCount(url);
         doc.addField(systemHelper.clickCountField, count);
         if (logger.isDebugEnabled()) {
@@ -193,10 +191,9 @@ public class IndexUpdateCallbackImpl implements IndexUpdateCallback {
 
     protected void addFavoriteCountField(final SolrInputDocument doc,
             final String url) {
-        final SearchLogHelper searchLogHelper = SingletonS2Container
-                .getComponent(SearchLogHelper.class);
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SearchLogHelper searchLogHelper = ComponentUtil
+                .getSearchLogHelper();
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         final long count = searchLogHelper.getFavoriteCount(url);
         doc.addField(systemHelper.favoriteCountField, count);
         if (logger.isDebugEnabled()) {
diff --git a/src/main/java/jp/sf/fess/exec/Crawler.java b/src/main/java/jp/sf/fess/exec/Crawler.java
index ff8ed1817ef089ce0290936f78715aed73a58e2d..1acd32d3b597ed4d0a6869c2500a4160469e4803 100644
--- a/src/main/java/jp/sf/fess/exec/Crawler.java
+++ b/src/main/java/jp/sf/fess/exec/Crawler.java
@@ -48,6 +48,7 @@ import jp.sf.fess.screenshot.ScreenShotManager;
 import jp.sf.fess.service.CrawlingSessionService;
 import jp.sf.fess.service.PathMappingService;
 import jp.sf.fess.taglib.FessFunctions;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.ResourceUtil;
 
 import org.codelibs.core.CoreLibConstants;
@@ -256,8 +257,7 @@ public class Crawler implements Serializable {
         final Crawler crawler = SingletonS2Container
                 .getComponent(Crawler.class);
 
-        final DatabaseHelper databaseHelper = SingletonS2Container
-                .getComponent("databaseHelper");
+        final DatabaseHelper databaseHelper = ComponentUtil.getDatabaseHelper();
         databaseHelper.optimize();
 
         if (StringUtil.isBlank(options.sessionId)) {
@@ -266,10 +266,10 @@ public class Crawler implements Serializable {
             options.sessionId = sdf.format(new Date());
         }
 
-        final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                .getComponent("crawlingSessionHelper");
-        final DynamicProperties crawlerProperties = SingletonS2Container
-                .getComponent("crawlerProperties");
+        final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                .getCrawlingSessionHelper();
+        final DynamicProperties crawlerProperties = ComponentUtil
+                .getCrawlerProperties();
 
         if (StringUtil.isNotBlank(options.propertiesPath)) {
             crawlerProperties.reload(options.propertiesPath);
@@ -372,15 +372,14 @@ public class Crawler implements Serializable {
             logger.info("Starting Crawler..");
         }
 
-        final PathMappingHelper pathMappingHelper = SingletonS2Container
-                .getComponent("pathMappingHelper");
+        final PathMappingHelper pathMappingHelper = ComponentUtil
+                .getPathMappingHelper();
 
         final long totalTime = System.currentTimeMillis();
 
-        final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                .getComponent("crawlingSessionHelper");
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                .getCrawlingSessionHelper();
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
 
         boolean completed = false;
         int exitCode = Constants.EXIT_OK;
@@ -404,8 +403,8 @@ public class Crawler implements Serializable {
 
             // overlapping host
             try {
-                final OverlappingHostHelper overlappingHostHelper = SingletonS2Container
-                        .getComponent("overlappingHostHelper");
+                final OverlappingHostHelper overlappingHostHelper = ComponentUtil
+                        .getOverlappingHostHelper();
                 overlappingHostHelper.init();
             } catch (final Exception e) {
                 logger.warn("Could not initialize overlappingHostHelper.", e);
diff --git a/src/main/java/jp/sf/fess/filter/AuthenticationFilter.java b/src/main/java/jp/sf/fess/filter/AuthenticationFilter.java
index 5ddeb4b3bac47557ba9ac86f9ce15acddc0ff12e..45e1f4ca3714979d8d201e6f32a6cdbb9fa735f5 100644
--- a/src/main/java/jp/sf/fess/filter/AuthenticationFilter.java
+++ b/src/main/java/jp/sf/fess/filter/AuthenticationFilter.java
@@ -35,8 +35,8 @@ import javax.servlet.http.HttpServletResponse;
 import jp.sf.fess.Constants;
 import jp.sf.fess.crypto.FessCipher;
 import jp.sf.fess.entity.LoginInfo;
+import jp.sf.fess.util.ComponentUtil;
 
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 
 public class AuthenticationFilter implements Filter {
@@ -52,10 +52,6 @@ public class AuthenticationFilter implements Filter {
 
     protected boolean useSecureLogin;
 
-    protected FessCipher getFessCipher() {
-        return SingletonS2Container.getComponent(cipherName);
-    }
-
     @Override
     public void destroy() {
         urlPatternList = null;
@@ -69,7 +65,7 @@ public class AuthenticationFilter implements Filter {
         final HttpServletRequest req = (HttpServletRequest) request;
         final HttpServletResponse res = (HttpServletResponse) response;
         final String uri = req.getRequestURI();
-        final FessCipher fessCipher = getFessCipher();
+        final FessCipher fessCipher = ComponentUtil.getCipher(cipherName);
         for (final Pattern pattern : urlPatternList) {
             final Matcher matcher = pattern.matcher(uri);
             if (matcher.matches()) {
diff --git a/src/main/java/jp/sf/fess/filter/LoginInfoFilter.java b/src/main/java/jp/sf/fess/filter/LoginInfoFilter.java
index 062521692c404bb3e4a25d07e2de3ffc52c01e87..56941e808984bc11b6d3e5aea656f50927125834 100644
--- a/src/main/java/jp/sf/fess/filter/LoginInfoFilter.java
+++ b/src/main/java/jp/sf/fess/filter/LoginInfoFilter.java
@@ -32,8 +32,7 @@ import javax.servlet.http.HttpSession;
 import jp.sf.fess.Constants;
 import jp.sf.fess.entity.LoginInfo;
 import jp.sf.fess.helper.SystemHelper;
-
-import org.seasar.framework.container.SingletonS2Container;
+import jp.sf.fess.util.ComponentUtil;
 
 public class LoginInfoFilter implements Filter {
     private long updateInterval = 60 * 60 * 1000L; // 1h
@@ -72,8 +71,7 @@ public class LoginInfoFilter implements Filter {
 
     private void updateRoleList(final HttpServletRequest hRequest,
             final LoginInfo loginInfo) {
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         final List<String> authenticatedRoleList = systemHelper
                 .getAuthenticatedRoleList();
         final List<String> roleList = new ArrayList<String>();
diff --git a/src/main/java/jp/sf/fess/filter/WebApiFilter.java b/src/main/java/jp/sf/fess/filter/WebApiFilter.java
index 68622894b39399902aaee8efed685abd97a83036..7bfec7daf78632bb0efbc5c5faa82b21aa44164a 100644
--- a/src/main/java/jp/sf/fess/filter/WebApiFilter.java
+++ b/src/main/java/jp/sf/fess/filter/WebApiFilter.java
@@ -29,8 +29,7 @@ import javax.servlet.http.HttpServletResponse;
 
 import jp.sf.fess.api.WebApiManager;
 import jp.sf.fess.api.WebApiManagerFactory;
-
-import org.seasar.framework.container.SingletonS2Container;
+import jp.sf.fess.util.ComponentUtil;
 
 public class WebApiFilter implements Filter {
 
@@ -48,8 +47,8 @@ public class WebApiFilter implements Filter {
     public void doFilter(final ServletRequest request,
             final ServletResponse response, final FilterChain chain)
             throws IOException, ServletException {
-        final WebApiManagerFactory webApiManagerFactory = SingletonS2Container
-                .getComponent(WebApiManagerFactory.class);
+        final WebApiManagerFactory webApiManagerFactory = ComponentUtil
+                .getWebApiManagerFactory();
         final WebApiManager webApiManager = webApiManagerFactory
                 .get((HttpServletRequest) request);
         if (webApiManager == null) {
diff --git a/src/main/java/jp/sf/fess/form/admin/WebCrawlingConfigForm.java b/src/main/java/jp/sf/fess/form/admin/WebCrawlingConfigForm.java
index 0059bf890043d3411426fa3a0d873e66cd37d19e..3fd7ac119ea84975b843a081a0c99b7ba697d99e 100644
--- a/src/main/java/jp/sf/fess/form/admin/WebCrawlingConfigForm.java
+++ b/src/main/java/jp/sf/fess/form/admin/WebCrawlingConfigForm.java
@@ -22,8 +22,8 @@ import java.util.Date;
 
 import jp.sf.fess.Constants;
 import jp.sf.fess.crud.form.admin.BsWebCrawlingConfigForm;
+import jp.sf.fess.util.ComponentUtil;
 
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 
 public class WebCrawlingConfigForm extends BsWebCrawlingConfigForm implements
@@ -41,7 +41,7 @@ public class WebCrawlingConfigForm extends BsWebCrawlingConfigForm implements
     public void initialize() {
         super.initialize();
         sortOrder = "0";
-        userAgent = SingletonS2Container.getComponent("userAgentName");
+        userAgent = ComponentUtil.getUserAgentName();
         if (StringUtil.isBlank(userAgent)) {
             userAgent = "Fess Robot/1.0";
         }
diff --git a/src/main/java/jp/sf/fess/helper/CrawlingConfigHelper.java b/src/main/java/jp/sf/fess/helper/CrawlingConfigHelper.java
index 10a134a0f0b6d726843b78af5839d74219c52a8e..e31be865a0505c8be71659caea1b700271af79c7 100644
--- a/src/main/java/jp/sf/fess/helper/CrawlingConfigHelper.java
+++ b/src/main/java/jp/sf/fess/helper/CrawlingConfigHelper.java
@@ -37,6 +37,7 @@ import jp.sf.fess.helper.UserAgentHelper.UserAgentType;
 import jp.sf.fess.service.DataCrawlingConfigService;
 import jp.sf.fess.service.FileCrawlingConfigService;
 import jp.sf.fess.service.WebCrawlingConfigService;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.io.IOUtils;
 import org.seasar.framework.container.SingletonS2Container;
@@ -135,8 +136,7 @@ public class CrawlingConfigHelper implements Serializable {
         if (logger.isDebugEnabled()) {
             logger.debug("writing the content of: " + doc);
         }
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         final Object configIdObj = doc.get(systemHelper.configIdField);
         if (configIdObj == null) {
             throw new FessSystemException("configId is null.");
@@ -215,8 +215,8 @@ public class CrawlingConfigHelper implements Serializable {
 
     protected void writeFileName(final HttpServletResponse response,
             final ResponseData responseData) {
-        final UserAgentHelper userAgentHelper = SingletonS2Container
-                .getComponent(UserAgentHelper.class);
+        final UserAgentHelper userAgentHelper = ComponentUtil
+                .getUserAgentHelper();
         final UserAgentType userAgentType = userAgentHelper.getUserAgentType();
         String charset = responseData.getCharSet();
         if (charset == null) {
diff --git a/src/main/java/jp/sf/fess/helper/DataIndexHelper.java b/src/main/java/jp/sf/fess/helper/DataIndexHelper.java
index 53a02652b4550e042429500dfb8d5c4ead938f64..41403d1e45095c2d4045400ca30ce5dfe5f7a301 100644
--- a/src/main/java/jp/sf/fess/helper/DataIndexHelper.java
+++ b/src/main/java/jp/sf/fess/helper/DataIndexHelper.java
@@ -31,6 +31,7 @@ import jp.sf.fess.ds.DataStore;
 import jp.sf.fess.ds.DataStoreFactory;
 import jp.sf.fess.ds.IndexUpdateCallback;
 import jp.sf.fess.service.DataCrawlingConfigService;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.codelibs.core.util.DynamicProperties;
 import org.codelibs.solr.lib.SolrGroup;
@@ -143,8 +144,7 @@ public class DataIndexHelper implements Serializable {
 
         }
 
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
 
         int startedCrawlerNum = 0;
         int activeCrawlerNum = 0;
@@ -211,8 +211,8 @@ public class DataIndexHelper implements Serializable {
         indexUpdateCallback.commit();
 
         // put cralwing info
-        final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                .getComponent("crawlingSessionHelper");
+        final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                .getCrawlingSessionHelper();
 
         final long execTime = System.currentTimeMillis() - startTime;
         crawlingSessionHelper.putToInfoMap(Constants.DATA_CRAWLING_EXEC_TIME,
@@ -259,8 +259,8 @@ public class DataIndexHelper implements Serializable {
         @Override
         public void run() {
             running = true;
-            final DataStoreFactory dataStoreFactory = SingletonS2Container
-                    .getComponent(DataStoreFactory.class);
+            final DataStoreFactory dataStoreFactory = ComponentUtil
+                    .getDataStoreFactory();
             dataStore = dataStoreFactory.getDataStore(dataCrawlingConfig
                     .getHandlerName());
             if (dataStore == null) {
diff --git a/src/main/java/jp/sf/fess/helper/RobotLogHelper.java b/src/main/java/jp/sf/fess/helper/RobotLogHelper.java
index 67f171a5ae670fcf0f01a3085241600a62e4d3e0..070b539a4750af832428ba93c903613399782c93 100644
--- a/src/main/java/jp/sf/fess/helper/RobotLogHelper.java
+++ b/src/main/java/jp/sf/fess/helper/RobotLogHelper.java
@@ -18,6 +18,7 @@ package jp.sf.fess.helper;
 
 import jp.sf.fess.db.exentity.CrawlingConfig;
 import jp.sf.fess.service.FailureUrlService;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.robot.RobotMultipleCrawlAccessException;
@@ -90,8 +91,7 @@ public class RobotLogHelper extends LogHelperImpl {
     }
 
     private CrawlingConfig getCrawlingConfig(final String sessionCountId) {
-        return SingletonS2Container.getComponent(CrawlingConfigHelper.class)
-                .get(sessionCountId);
+        return ComponentUtil.getCrawlingConfigHelper().get(sessionCountId);
     }
 
 }
diff --git a/src/main/java/jp/sf/fess/helper/WebFsIndexHelper.java b/src/main/java/jp/sf/fess/helper/WebFsIndexHelper.java
index 145311e2355977f7397018bf76a94d4e1611e3a6..6ea4887c1694daa98a954efed77c43220fd0b20b 100644
--- a/src/main/java/jp/sf/fess/helper/WebFsIndexHelper.java
+++ b/src/main/java/jp/sf/fess/helper/WebFsIndexHelper.java
@@ -32,6 +32,7 @@ import jp.sf.fess.service.FileAuthenticationService;
 import jp.sf.fess.service.FileCrawlingConfigService;
 import jp.sf.fess.service.WebCrawlingConfigService;
 import jp.sf.fess.solr.IndexUpdater;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.codelibs.core.util.DynamicProperties;
 import org.codelibs.solr.lib.SolrGroup;
@@ -150,8 +151,7 @@ public class WebFsIndexHelper implements Serializable {
             // NOP
         }
 
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
 
         final long startTime = System.currentTimeMillis();
 
@@ -402,8 +402,7 @@ public class WebFsIndexHelper implements Serializable {
         }
 
         // run index update
-        final IndexUpdater indexUpdater = SingletonS2Container
-                .getComponent("indexUpdater");
+        final IndexUpdater indexUpdater = ComponentUtil.getIndexUpdater();
         indexUpdater.setName("IndexUpdater");
         indexUpdater.setPriority(indexUpdaterPriority);
         indexUpdater.setSessionIdList(sessionIdList);
@@ -478,8 +477,8 @@ public class WebFsIndexHelper implements Serializable {
         s2RobotStatusList.clear();
 
         // put cralwing info
-        final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                .getComponent("crawlingSessionHelper");
+        final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                .getCrawlingSessionHelper();
 
         final long execTime = System.currentTimeMillis() - startTime;
         crawlingSessionHelper.putToInfoMap(Constants.WEB_FS_CRAWLING_EXEC_TIME,
diff --git a/src/main/java/jp/sf/fess/interval/FessIntervalController.java b/src/main/java/jp/sf/fess/interval/FessIntervalController.java
index f502257930e3a673c52b3437a8fffbfe2bb1d319..809b5ce25a4bb440e5be8c2b4206508a74ebc02e 100644
--- a/src/main/java/jp/sf/fess/interval/FessIntervalController.java
+++ b/src/main/java/jp/sf/fess/interval/FessIntervalController.java
@@ -17,8 +17,8 @@
 package jp.sf.fess.interval;
 
 import jp.sf.fess.helper.IntervalControlHelper;
+import jp.sf.fess.util.ComponentUtil;
 
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.robot.interval.impl.DefaultIntervalController;
 
 public class FessIntervalController extends DefaultIntervalController {
@@ -62,8 +62,8 @@ public class FessIntervalController extends DefaultIntervalController {
     @Override
     protected void delayForWaitingNewUrl() {
         try {
-            final IntervalControlHelper intervalControlHelper = SingletonS2Container
-                    .getComponent("intervalControlHelper");
+            final IntervalControlHelper intervalControlHelper = ComponentUtil
+                    .getIntervalControlHelper();
             intervalControlHelper.checkCrawlerStatus();
             intervalControlHelper.delayByRules();
         } catch (final Exception e) {
diff --git a/src/main/java/jp/sf/fess/job/CrawlJob.java b/src/main/java/jp/sf/fess/job/CrawlJob.java
index 6625bd22a90cced9f9e6fb2a96657009ff93ee20..5f5a213a2138ad66aafddde7c9777c82831c5df3 100644
--- a/src/main/java/jp/sf/fess/job/CrawlJob.java
+++ b/src/main/java/jp/sf/fess/job/CrawlJob.java
@@ -31,6 +31,7 @@ import jp.sf.fess.exec.Crawler;
 import jp.sf.fess.helper.JobHelper;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.job.JobExecutor.ShutdownListener;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.InputStreamThread;
 
 import org.apache.commons.lang.StringUtils;
@@ -185,8 +186,8 @@ public class CrawlJob {
             jobExecutor.addShutdownListener(new ShutdownListener() {
                 @Override
                 public void onShutdown() {
-                    SingletonS2Container.getComponent(JobHelper.class)
-                            .destroyCrawlerProcess(sessionId);
+                    ComponentUtil.getJobHelper().destroyCrawlerProcess(
+                            sessionId);
                 }
             });
         }
@@ -208,10 +209,8 @@ public class CrawlJob {
         final String cpSeparator = SystemUtils.IS_OS_WINDOWS ? ";" : ":";
         final ServletContext servletContext = SingletonS2Container
                 .getComponent(ServletContext.class);
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
-        final JobHelper jobHelper = SingletonS2Container
-                .getComponent(JobHelper.class);
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
+        final JobHelper jobHelper = ComponentUtil.getJobHelper();
 
         crawlerCmdList.add(systemHelper.getJavaCommandPath());
 
diff --git a/src/main/java/jp/sf/fess/job/DailyJob.java b/src/main/java/jp/sf/fess/job/DailyJob.java
index ae705284bb495c007051783987e492301b5cea1b..2ba4e5940d40c6f40a6ebb3a6ae5f68c6e77d732 100644
--- a/src/main/java/jp/sf/fess/job/DailyJob.java
+++ b/src/main/java/jp/sf/fess/job/DailyJob.java
@@ -24,6 +24,7 @@ import jp.sf.fess.service.CrawlingSessionService;
 import jp.sf.fess.service.JobLogService;
 import jp.sf.fess.service.SearchLogService;
 import jp.sf.fess.service.UserInfoService;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.codelibs.core.util.DynamicProperties;
 import org.seasar.framework.container.SingletonS2Container;
@@ -44,10 +45,10 @@ public class DailyJob {
                 .getComponent(JobLogService.class);
         final UserInfoService userInfoService = SingletonS2Container
                 .getComponent(UserInfoService.class);
-        final HotSearchWordHelper hotSearchWordHelper = SingletonS2Container
-                .getComponent(HotSearchWordHelper.class);
-        final DynamicProperties crawlerProperties = SingletonS2Container
-                .getComponent("crawlerProperties");
+        final HotSearchWordHelper hotSearchWordHelper = ComponentUtil
+                .getHotSearchWordHelper();
+        final DynamicProperties crawlerProperties = ComponentUtil
+                .getCrawlerProperties();
 
         final StringBuilder resultBuf = new StringBuilder();
 
diff --git a/src/main/java/jp/sf/fess/job/JobScheduler.java b/src/main/java/jp/sf/fess/job/JobScheduler.java
index 0fe0a3b03a7a22e51390f14494a55806a6bb309c..05b7d8c5efd0d05d4784092a3903a280ceee9bcd 100644
--- a/src/main/java/jp/sf/fess/job/JobScheduler.java
+++ b/src/main/java/jp/sf/fess/job/JobScheduler.java
@@ -29,6 +29,7 @@ import jp.sf.fess.db.cbean.ScheduledJobCB;
 import jp.sf.fess.db.exbhv.ScheduledJobBhv;
 import jp.sf.fess.db.exentity.ScheduledJob;
 import jp.sf.fess.helper.JobHelper;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.quartz.Job;
 import org.quartz.JobDataMap;
@@ -84,8 +85,7 @@ public class JobScheduler {
 
     @DestroyMethod
     public void destroy() {
-        final JobHelper jobHelper = SingletonS2Container
-                .getComponent(JobHelper.class);
+        final JobHelper jobHelper = ComponentUtil.getJobHelper();
         for (final String sessionId : jobHelper.getRunningSessionIdSet()) {
             jobHelper.destroyCrawlerProcess(sessionId);
         }
diff --git a/src/main/java/jp/sf/fess/job/MinutelyJob.java b/src/main/java/jp/sf/fess/job/MinutelyJob.java
index 60c8d8dd1b40d12a2a190c2723b947ae6281ccfe..8b076856617145c425de8d865651d9405658c77d 100644
--- a/src/main/java/jp/sf/fess/job/MinutelyJob.java
+++ b/src/main/java/jp/sf/fess/job/MinutelyJob.java
@@ -17,8 +17,8 @@
 package jp.sf.fess.job;
 
 import jp.sf.fess.helper.SearchLogHelper;
+import jp.sf.fess.util.ComponentUtil;
 
-import org.seasar.framework.container.SingletonS2Container;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -28,8 +28,8 @@ public class MinutelyJob {
             .getLogger(MinutelyJob.class);
 
     public String execute() {
-        final SearchLogHelper searchLogHelper = SingletonS2Container
-                .getComponent(SearchLogHelper.class);
+        final SearchLogHelper searchLogHelper = ComponentUtil
+                .getSearchLogHelper();
 
         final StringBuilder resultBuf = new StringBuilder();
 
diff --git a/src/main/java/jp/sf/fess/job/TriggeredJob.java b/src/main/java/jp/sf/fess/job/TriggeredJob.java
index 8784f8bc203ebbed64f4661dea7aef0413ca4f29..369b46c2f43a67982079e805cd87d9fc420a3183 100644
--- a/src/main/java/jp/sf/fess/job/TriggeredJob.java
+++ b/src/main/java/jp/sf/fess/job/TriggeredJob.java
@@ -24,6 +24,7 @@ import jp.sf.fess.db.exentity.ScheduledJob;
 import jp.sf.fess.helper.JobHelper;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.service.JobLogService;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.quartz.Job;
 import org.quartz.JobDataMap;
@@ -37,8 +38,6 @@ public class TriggeredJob implements Job {
     private static final Logger logger = LoggerFactory
             .getLogger(TriggeredJob.class);
 
-    private static final String JOB_EXECUTOR_SUFFIX = "JobExecutor";
-
     @Override
     public void execute(final JobExecutionContext context)
             throws JobExecutionException {
@@ -50,20 +49,17 @@ public class TriggeredJob implements Job {
     }
 
     public void execute(final ScheduledJob scheduledJob) {
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
-        final JobHelper jobHelper = SingletonS2Container
-                .getComponent(JobHelper.class);
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
+        final JobHelper jobHelper = ComponentUtil.getJobHelper();
         final JobLog jobLog = new JobLog(scheduledJob);
         final String scriptType = scheduledJob.getScriptType();
         final String script = scheduledJob.getScriptData();
         final Long id = scheduledJob.getId();
         final String jobId = Constants.JOB_ID_PREFIX + id;
-        final JobExecutor jobExecutor = SingletonS2Container
-                .getComponent(scriptType + JOB_EXECUTOR_SUFFIX);
+        final JobExecutor jobExecutor = ComponentUtil
+                .getJobExecutor(scriptType);
         if (jobExecutor == null) {
-            throw new ScheduledJobException("No jobExecutor: " + scriptType
-                    + JOB_EXECUTOR_SUFFIX);
+            throw new ScheduledJobException("No jobExecutor: " + scriptType);
         }
 
         if (jobHelper.startJobExecutoer(id, jobExecutor) != null) {
diff --git a/src/main/java/jp/sf/fess/robot/FessS2RobotThread.java b/src/main/java/jp/sf/fess/robot/FessS2RobotThread.java
index 3111b54bad8f4c08c0d11c5cf447ab9fcb45f56a..b9308fc62307b869ac892b7fdf12b8a3ccfa5566 100644
--- a/src/main/java/jp/sf/fess/robot/FessS2RobotThread.java
+++ b/src/main/java/jp/sf/fess/robot/FessS2RobotThread.java
@@ -34,6 +34,7 @@ import jp.sf.fess.helper.CrawlingSessionHelper;
 import jp.sf.fess.helper.SambaHelper;
 import jp.sf.fess.helper.SearchLogHelper;
 import jp.sf.fess.helper.SystemHelper;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.solr.client.solrj.SolrQuery;
@@ -45,7 +46,6 @@ import org.codelibs.core.util.DynamicProperties;
 import org.codelibs.solr.lib.SolrGroup;
 import org.codelibs.solr.lib.SolrGroupManager;
 import org.codelibs.solr.lib.policy.QueryType;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.robot.S2RobotThread;
 import org.seasar.robot.client.S2RobotClient;
 import org.seasar.robot.client.smb.SmbClient;
@@ -66,22 +66,20 @@ public class FessS2RobotThread extends S2RobotThread {
     @Override
     protected boolean isContentUpdated(final S2RobotClient client,
             final UrlQueue urlQueue) {
-        final DynamicProperties crawlerProperties = SingletonS2Container
-                .getComponent("crawlerProperties");
+        final DynamicProperties crawlerProperties = ComponentUtil
+                .getCrawlerProperties();
         if (crawlerProperties.getProperty(Constants.DIFF_CRAWLING_PROPERTY,
                 Constants.TRUE).equals(Constants.TRUE)) {
 
             log(logHelper, LogType.CHECK_LAST_MODIFIED, robotContext, urlQueue);
             final long startTime = System.currentTimeMillis();
 
-            final CrawlingConfigHelper crawlingConfigHelper = SingletonS2Container
-                    .getComponent(CrawlingConfigHelper.class);
-            final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                    .getComponent(CrawlingSessionHelper.class);
-            final SystemHelper systemHelper = SingletonS2Container
-                    .getComponent("systemHelper");
-            final SambaHelper sambaHelper = SingletonS2Container
-                    .getComponent(SambaHelper.class);
+            final CrawlingConfigHelper crawlingConfigHelper = ComponentUtil
+                    .getCrawlingConfigHelper();
+            final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                    .getCrawlingSessionHelper();
+            final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
+            final SambaHelper sambaHelper = ComponentUtil.getSambaHelper();
             final boolean useAclAsRole = crawlerProperties.getProperty(
                     Constants.USE_ACL_AS_ROLE, Constants.FALSE).equals(
                     Constants.TRUE);
@@ -164,8 +162,8 @@ public class FessS2RobotThread extends S2RobotThread {
                 final Integer clickCount = (Integer) solrDocument
                         .get(systemHelper.clickCountField);
                 if (clickCount != null) {
-                    final SearchLogHelper searchLogHelper = SingletonS2Container
-                            .getComponent(SearchLogHelper.class);
+                    final SearchLogHelper searchLogHelper = ComponentUtil
+                            .getSearchLogHelper();
                     final int count = searchLogHelper.getClickCount(urlQueue
                             .getUrl());
                     if (count != clickCount.intValue()) {
@@ -177,8 +175,8 @@ public class FessS2RobotThread extends S2RobotThread {
                 final Integer favoriteCount = (Integer) solrDocument
                         .get(systemHelper.favoriteCountField);
                 if (favoriteCount != null) {
-                    final SearchLogHelper searchLogHelper = SingletonS2Container
-                            .getComponent(SearchLogHelper.class);
+                    final SearchLogHelper searchLogHelper = ComponentUtil
+                            .getSearchLogHelper();
                     final long count = searchLogHelper
                             .getFavoriteCount(urlQueue.getUrl());
                     if (count != favoriteCount.longValue()) {
@@ -261,10 +259,9 @@ public class FessS2RobotThread extends S2RobotThread {
 
     protected SolrDocumentList getSolrDocumentList(final String id,
             final boolean wildcard, final String expiresField) {
-        final SolrGroupManager solrGroupManager = SingletonS2Container
-                .getComponent(SolrGroupManager.class);
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SolrGroupManager solrGroupManager = ComponentUtil
+                .getSolrGroupManager();
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         final SolrGroup solrGroup = solrGroupManager
                 .getSolrGroup(QueryType.ADD);
         final SolrQuery solrQuery = new SolrQuery();
@@ -304,8 +301,8 @@ public class FessS2RobotThread extends S2RobotThread {
     }
 
     protected Set<String> getChildUrlSet(final String id) {
-        final SolrGroupManager solrGroupManager = SingletonS2Container
-                .getComponent(SolrGroupManager.class);
+        final SolrGroupManager solrGroupManager = ComponentUtil
+                .getSolrGroupManager();
         final SolrGroup solrGroup = solrGroupManager
                 .getSolrGroup(QueryType.ADD);
         final SolrQuery solrQuery = new SolrQuery();
@@ -344,8 +341,8 @@ public class FessS2RobotThread extends S2RobotThread {
     }
 
     protected void deleteSolrDocument(final String id) {
-        final SolrGroupManager solrGroupManager = SingletonS2Container
-                .getComponent(SolrGroupManager.class);
+        final SolrGroupManager solrGroupManager = ComponentUtil
+                .getSolrGroupManager();
         final SolrGroup solrGroup = solrGroupManager
                 .getSolrGroup(QueryType.DELETE);
         final String query = "{!raw f=parentId v=\"" + id + "\"}";
diff --git a/src/main/java/jp/sf/fess/screenshot/ScreenShotManager.java b/src/main/java/jp/sf/fess/screenshot/ScreenShotManager.java
index 54a36d69f5ad00c945243aa85f569e9753597877..8e91d2f15c17431e7bcc3868c7985c3a1c8c8cb0 100644
--- a/src/main/java/jp/sf/fess/screenshot/ScreenShotManager.java
+++ b/src/main/java/jp/sf/fess/screenshot/ScreenShotManager.java
@@ -33,9 +33,9 @@ import javax.servlet.http.HttpSession;
 import jp.sf.fess.Constants;
 import jp.sf.fess.FessSystemException;
 import jp.sf.fess.helper.SystemHelper;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.io.FileUtils;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.container.annotation.tiger.InitMethod;
 import org.seasar.framework.util.StringUtil;
 import org.seasar.robot.util.LruHashMap;
@@ -90,8 +90,7 @@ public class ScreenShotManager {
     }
 
     public void generate(final Map<String, Object> docMap) {
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         for (final ScreenShotGenerator generator : generatorList) {
             if (generator.isTarget(docMap)) {
                 final String segment = (String) docMap.get("segment");
@@ -107,8 +106,7 @@ public class ScreenShotManager {
 
     public void storeRequest(final String queryId,
             final List<Map<String, Object>> documentItems) {
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         final Map<String, String> dataMap = new HashMap<String, String>(
                 documentItems.size());
         for (final Map<String, Object> docMap : documentItems) {
diff --git a/src/main/java/jp/sf/fess/service/DatabaseService.java b/src/main/java/jp/sf/fess/service/DatabaseService.java
index 71a24e70240c38f8d641f80298eb8c0c5b636be1..1ae207ae82337782b4826fa1c3da666c0b655d3b 100644
--- a/src/main/java/jp/sf/fess/service/DatabaseService.java
+++ b/src/main/java/jp/sf/fess/service/DatabaseService.java
@@ -110,11 +110,11 @@ import jp.sf.fess.db.exentity.WebConfigToLabelTypeMapping;
 import jp.sf.fess.db.exentity.WebConfigToRoleTypeMapping;
 import jp.sf.fess.db.exentity.WebCrawlingConfig;
 import jp.sf.fess.helper.LabelTypeHelper;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.codelibs.core.util.DynamicProperties;
 import org.seasar.dbflute.bhv.DeleteOption;
 import org.seasar.framework.beans.util.Beans;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -548,8 +548,8 @@ public class DatabaseService {
                     }
                 }
                 // restore labels
-                final LabelTypeHelper labelTypeHelper = SingletonS2Container
-                        .getComponent("labelTypeHelper");
+                final LabelTypeHelper labelTypeHelper = ComponentUtil
+                        .getLabelTypeHelper();
                 if (labelTypeHelper != null) {
                     labelTypeHelper.init();
                 }
diff --git a/src/main/java/jp/sf/fess/service/FailureUrlService.java b/src/main/java/jp/sf/fess/service/FailureUrlService.java
index cfd253aadb2f63dddd9646c8f6f68136931480b2..2b7b2e2197497cd0cc8f7d91ccf2e8e5f3b4762a 100644
--- a/src/main/java/jp/sf/fess/service/FailureUrlService.java
+++ b/src/main/java/jp/sf/fess/service/FailureUrlService.java
@@ -35,6 +35,7 @@ import jp.sf.fess.db.exentity.CrawlingConfig;
 import jp.sf.fess.db.exentity.FailureUrl;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.pager.FailureUrlPager;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.lang.StringUtils;
 import org.codelibs.core.util.DynamicProperties;
@@ -201,8 +202,7 @@ public class FailureUrlService extends BsFailureUrlService implements
     }
 
     private String getStackTrace(final Throwable t) {
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         final StringWriter sw = new StringWriter();
         final PrintWriter pw = new PrintWriter(sw, true);
         t.printStackTrace(pw);
diff --git a/src/main/java/jp/sf/fess/service/LabelTypeService.java b/src/main/java/jp/sf/fess/service/LabelTypeService.java
index 70a438f42816fa21823154d480033c74af4bc486..7fab56fa0aa556fcf749a5c5f4f7c7ecd5bec1b2 100644
--- a/src/main/java/jp/sf/fess/service/LabelTypeService.java
+++ b/src/main/java/jp/sf/fess/service/LabelTypeService.java
@@ -31,10 +31,10 @@ import jp.sf.fess.db.exentity.LabelType;
 import jp.sf.fess.db.exentity.LabelTypeToRoleTypeMapping;
 import jp.sf.fess.helper.LabelTypeHelper;
 import jp.sf.fess.pager.LabelTypePager;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.seasar.dbflute.bhv.ConditionBeanSetupper;
 import org.seasar.dbflute.cbean.ListResultBean;
-import org.seasar.framework.container.SingletonS2Container;
 
 public class LabelTypeService extends BsLabelTypeService implements
         Serializable {
@@ -162,8 +162,8 @@ public class LabelTypeService extends BsLabelTypeService implements
             }
         }
 
-        final LabelTypeHelper labelTypeHelper = SingletonS2Container
-                .getComponent("labelTypeHelper");
+        final LabelTypeHelper labelTypeHelper = ComponentUtil
+                .getLabelTypeHelper();
         if (labelTypeHelper != null) {
             labelTypeHelper.refresh(getLabelTypeListWithRoles());
         }
diff --git a/src/main/java/jp/sf/fess/service/SearchService.java b/src/main/java/jp/sf/fess/service/SearchService.java
index 5c849677f22975ca60b570dc1ba1c7237586d994..68d2a191ed93b654b141f0c307641ed4d46a5dba 100644
--- a/src/main/java/jp/sf/fess/service/SearchService.java
+++ b/src/main/java/jp/sf/fess/service/SearchService.java
@@ -40,6 +40,7 @@ import jp.sf.fess.helper.RoleQueryHelper;
 import jp.sf.fess.solr.FessSolrQueryException;
 import jp.sf.fess.suggest.SuggestConstants;
 import jp.sf.fess.suggest.Suggester;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.QueryResponseList;
 
 import org.apache.solr.client.solrj.SolrQuery;
@@ -50,7 +51,6 @@ import org.apache.solr.common.util.NamedList;
 import org.codelibs.solr.lib.SolrGroup;
 import org.codelibs.solr.lib.SolrGroupManager;
 import org.codelibs.solr.lib.policy.QueryType;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 
 public class SearchService implements Serializable {
@@ -267,8 +267,8 @@ public class SearchService implements Serializable {
         }
         final long execTime = System.currentTimeMillis() - startTime;
 
-        final QueryResponseList queryResponseList = SingletonS2Container
-                .getComponent(QueryResponseList.class);
+        final QueryResponseList queryResponseList = ComponentUtil
+                .getQueryResponseList();
         queryResponseList.init(queryResponse, rows);
         queryResponseList.setSearchQuery(q);
         queryResponseList.setSolrQuery(solrQuery.toString());
diff --git a/src/main/java/jp/sf/fess/solr/IndexUpdater.java b/src/main/java/jp/sf/fess/solr/IndexUpdater.java
index 93ee71c72d71baae560ca169e0c63e88442a9b1d..93b91f04f008cf848d7580f65c8b87352bbf2bbb 100644
--- a/src/main/java/jp/sf/fess/solr/IndexUpdater.java
+++ b/src/main/java/jp/sf/fess/solr/IndexUpdater.java
@@ -34,6 +34,7 @@ import jp.sf.fess.db.exentity.customize.FavoriteUrlCount;
 import jp.sf.fess.helper.IntervalControlHelper;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.screenshot.ScreenShotManager;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.solr.common.SolrInputDocument;
 import org.codelibs.solr.lib.SolrGroup;
@@ -189,8 +190,8 @@ public class IndexUpdater extends Thread {
         int solrErrorCount = 0;
         int errorCount = 0;
         int emptyListCount = 0;
-        final IntervalControlHelper intervalControlHelper = SingletonS2Container
-                .getComponent("intervalControlHelper");
+        final IntervalControlHelper intervalControlHelper = ComponentUtil
+                .getIntervalControlHelper();
         try {
             while (!finishCrawling || !accessResultList.isEmpty()) {
                 try {
@@ -579,8 +580,8 @@ public class IndexUpdater extends Thread {
                         + unprocessedDocumentSize + ") "
                         + " unprocessed documents.");
             }
-            final IntervalControlHelper intervalControlHelper = SingletonS2Container
-                    .getComponent("intervalControlHelper");
+            final IntervalControlHelper intervalControlHelper = ComponentUtil
+                    .getIntervalControlHelper();
             intervalControlHelper.setCrawlerRunning(false);
         }
         return arList;
diff --git a/src/main/java/jp/sf/fess/solr/policy/FessStatusPolicy.java b/src/main/java/jp/sf/fess/solr/policy/FessStatusPolicy.java
index ff2f196437790d72ea5cc5059ee8efa874d6ed0a..ab22927270ab07145c007100b64ea1f608d3f879 100644
--- a/src/main/java/jp/sf/fess/solr/policy/FessStatusPolicy.java
+++ b/src/main/java/jp/sf/fess/solr/policy/FessStatusPolicy.java
@@ -24,12 +24,12 @@ import java.util.Map;
 
 import jp.sf.fess.Constants;
 import jp.sf.fess.helper.MailHelper;
+import jp.sf.fess.util.ComponentUtil;
 import jp.sf.fess.util.ResourceUtil;
 
 import org.codelibs.core.util.DynamicProperties;
 import org.codelibs.solr.lib.policy.QueryType;
 import org.codelibs.solr.lib.policy.impl.StatusPolicyImpl;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -152,15 +152,14 @@ public class FessStatusPolicy extends StatusPolicyImpl {
     }
 
     protected void send(final String subject, final Map<String, Object> dataMap) {
-        final DynamicProperties crawlerProperties = SingletonS2Container
-                .getComponent("crawlerProperties");
+        final DynamicProperties crawlerProperties = ComponentUtil
+                .getCrawlerProperties();
         if (crawlerProperties == null) {
             logger.info("crawlerProperties is not found.");
             return;
         }
 
-        final MailHelper mailHelper = SingletonS2Container
-                .getComponent("mailHelper");
+        final MailHelper mailHelper = ComponentUtil.getMailHelper();
         if (mailHelper == null) {
             logger.info("mailHelper is not found.");
             return;
diff --git a/src/main/java/jp/sf/fess/taglib/FessFunctions.java b/src/main/java/jp/sf/fess/taglib/FessFunctions.java
index 2f1b5ab4c093657a26bb60446526195b132ff8eb..f87f2bfdcef75d3a241883b93603e2e61d542ea1 100644
--- a/src/main/java/jp/sf/fess/taglib/FessFunctions.java
+++ b/src/main/java/jp/sf/fess/taglib/FessFunctions.java
@@ -30,11 +30,11 @@ import jp.sf.fess.entity.FacetQueryView;
 import jp.sf.fess.helper.HotSearchWordHelper;
 import jp.sf.fess.helper.HotSearchWordHelper.Range;
 import jp.sf.fess.helper.ViewHelper;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.solr.common.util.DateUtil;
 import org.codelibs.core.util.DynamicProperties;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.struts.util.RequestUtil;
 import org.seasar.struts.util.URLEncoderUtil;
 
@@ -92,8 +92,8 @@ public class FessFunctions {
             range = Range.ENTIRE;
         }
 
-        final HotSearchWordHelper hotSearchWordHelper = SingletonS2Container
-                .getComponent(HotSearchWordHelper.class);
+        final HotSearchWordHelper hotSearchWordHelper = ComponentUtil
+                .getHotSearchWordHelper();
         final List<String> wordList = hotSearchWordHelper
                 .getHotSearchWordList(range);
         if (wordList.size() > size) {
@@ -122,14 +122,14 @@ public class FessFunctions {
             range = Range.ENTIRE;
         }
 
-        final HotSearchWordHelper hotSearchWordHelper = SingletonS2Container
-                .getComponent(HotSearchWordHelper.class);
+        final HotSearchWordHelper hotSearchWordHelper = ComponentUtil
+                .getHotSearchWordHelper();
         return hotSearchWordHelper.getHotSearchWordList(range).size();
     }
 
     private static boolean isSupportHotSearchWord() {
-        final DynamicProperties crawlerProperties = SingletonS2Container
-                .getComponent("crawlerProperties");
+        final DynamicProperties crawlerProperties = ComponentUtil
+                .getCrawlerProperties();
         return crawlerProperties != null
                 && Constants.TRUE.equals(crawlerProperties.getProperty(
                         Constants.WEB_API_HOT_SEARCH_WORD_PROPERTY,
@@ -183,8 +183,7 @@ public class FessFunctions {
     }
 
     public static List<FacetQueryView> facetQueryViewList() {
-        final ViewHelper viewHelper = SingletonS2Container
-                .getComponent("viewHelper");
+        final ViewHelper viewHelper = ComponentUtil.getViewHelper();
         return viewHelper.getFacetQueryViewList();
     }
 
diff --git a/src/main/java/jp/sf/fess/transformer/AbstractFessFileTransformer.java b/src/main/java/jp/sf/fess/transformer/AbstractFessFileTransformer.java
index c10e7eb70075e52dd30d2e595b850d2f62c7b5fd..a4385218200b6c98676a83eb25d6bc104337f4d7 100644
--- a/src/main/java/jp/sf/fess/transformer/AbstractFessFileTransformer.java
+++ b/src/main/java/jp/sf/fess/transformer/AbstractFessFileTransformer.java
@@ -39,6 +39,7 @@ import jp.sf.fess.helper.PathMappingHelper;
 import jp.sf.fess.helper.SambaHelper;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.taglib.FessFunctions;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
@@ -166,28 +167,26 @@ public abstract class AbstractFessFileTransformer extends
         final ResultData resultData = new ResultData();
         resultData.setTransformerName(getName());
 
-        final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                .getComponent("crawlingSessionHelper");
+        final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                .getCrawlingSessionHelper();
         final String sessionId = crawlingSessionHelper
                 .getCanonicalSessionId(responseData.getSessionId());
         final Date documentExpires = crawlingSessionHelper.getDocumentExpires();
-        final PathMappingHelper pathMappingHelper = SingletonS2Container
-                .getComponent("pathMappingHelper");
+        final PathMappingHelper pathMappingHelper = ComponentUtil
+                .getPathMappingHelper();
         final String url = pathMappingHelper.replaceUrl(sessionId,
                 responseData.getUrl());
-        final SambaHelper sambaHelper = SingletonS2Container
-                .getComponent("sambaHelper");
-        final DynamicProperties crawlerProperties = SingletonS2Container
-                .getComponent("crawlerProperties");
+        final SambaHelper sambaHelper = ComponentUtil.getSambaHelper();
+        final DynamicProperties crawlerProperties = ComponentUtil
+                .getCrawlerProperties();
         final boolean useAclAsRole = crawlerProperties.getProperty(
                 Constants.USE_ACL_AS_ROLE, Constants.FALSE).equals(
                 Constants.TRUE);
-        final CrawlingConfigHelper crawlingConfigHelper = SingletonS2Container
-                .getComponent("crawlingConfigHelper");
+        final CrawlingConfigHelper crawlingConfigHelper = ComponentUtil
+                .getCrawlingConfigHelper();
         final CrawlingConfig crawlingConfig = crawlingConfigHelper
                 .get(responseData.getSessionId());
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         String urlEncoding;
         final UrlQueue urlQueue = CrawlingParameterUtil.getUrlQueue();
         if (urlQueue != null && urlQueue.getEncoding() != null) {
@@ -286,8 +285,8 @@ public abstract class AbstractFessFileTransformer extends
         for (final String labelType : crawlingConfig.getLabelTypeValues()) {
             labelTypeSet.add(labelType);
         }
-        final LabelTypeHelper labelTypeHelper = SingletonS2Container
-                .getComponent("labelTypeHelper");
+        final LabelTypeHelper labelTypeHelper = ComponentUtil
+                .getLabelTypeHelper();
         labelTypeSet.addAll(labelTypeHelper.getMatchedLabelValueSet(url));
         putResultDataBody(dataMap, "label", labelTypeSet);
         // role: roleType
diff --git a/src/main/java/jp/sf/fess/transformer/FessFileTransformer.java b/src/main/java/jp/sf/fess/transformer/FessFileTransformer.java
index e4c89584e5eef0de36e8744ea9edba6c9412ff56..3321c889b095be3ba2b917a09ad31f2710eaacb5 100644
--- a/src/main/java/jp/sf/fess/transformer/FessFileTransformer.java
+++ b/src/main/java/jp/sf/fess/transformer/FessFileTransformer.java
@@ -17,8 +17,8 @@
 package jp.sf.fess.transformer;
 
 import jp.sf.fess.FessSystemException;
+import jp.sf.fess.util.ComponentUtil;
 
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.robot.entity.ResponseData;
 import org.seasar.robot.extractor.Extractor;
 import org.seasar.robot.extractor.ExtractorFactory;
@@ -31,8 +31,8 @@ public class FessFileTransformer extends AbstractFessFileTransformer {
 
     @Override
     protected Extractor getExtractor(final ResponseData responseData) {
-        final ExtractorFactory extractorFactory = SingletonS2Container
-                .getComponent("extractorFactory");
+        final ExtractorFactory extractorFactory = ComponentUtil
+                .getExtractorFactory();
         if (extractorFactory == null) {
             throw new FessSystemException("Could not find extractorFactory.");
         }
diff --git a/src/main/java/jp/sf/fess/transformer/FessXpathTransformer.java b/src/main/java/jp/sf/fess/transformer/FessXpathTransformer.java
index 067d44021ca824c2171cac791f1cc951c11a3120..a0dd94696ac566d3589e4805048f3c0534eda1a2 100644
--- a/src/main/java/jp/sf/fess/transformer/FessXpathTransformer.java
+++ b/src/main/java/jp/sf/fess/transformer/FessXpathTransformer.java
@@ -45,12 +45,12 @@ import jp.sf.fess.helper.OverlappingHostHelper;
 import jp.sf.fess.helper.PathMappingHelper;
 import jp.sf.fess.helper.SystemHelper;
 import jp.sf.fess.taglib.FessFunctions;
+import jp.sf.fess.util.ComponentUtil;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.xpath.objects.XObject;
 import org.cyberneko.html.parsers.DOMParser;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.SerializeUtil;
 import org.seasar.framework.util.StringUtil;
 import org.seasar.robot.RobotCrawlAccessException;
@@ -208,21 +208,20 @@ public class FessXpathTransformer extends AbstractFessXpathTransformer {
             }
         }
 
-        final CrawlingSessionHelper crawlingSessionHelper = SingletonS2Container
-                .getComponent("crawlingSessionHelper");
+        final CrawlingSessionHelper crawlingSessionHelper = ComponentUtil
+                .getCrawlingSessionHelper();
         final String sessionId = crawlingSessionHelper
                 .getCanonicalSessionId(responseData.getSessionId());
         final Date documentExpires = crawlingSessionHelper.getDocumentExpires();
-        final PathMappingHelper pathMappingHelper = SingletonS2Container
-                .getComponent("pathMappingHelper");
+        final PathMappingHelper pathMappingHelper = ComponentUtil
+                .getPathMappingHelper();
         final String url = pathMappingHelper.replaceUrl(sessionId,
                 responseData.getUrl());
-        final CrawlingConfigHelper crawlingConfigHelper = SingletonS2Container
-                .getComponent("crawlingConfigHelper");
+        final CrawlingConfigHelper crawlingConfigHelper = ComponentUtil
+                .getCrawlingConfigHelper();
         final CrawlingConfig crawlingConfig = crawlingConfigHelper
                 .get(responseData.getSessionId());
-        final SystemHelper systemHelper = SingletonS2Container
-                .getComponent("systemHelper");
+        final SystemHelper systemHelper = ComponentUtil.getSystemHelper();
         String urlEncoding;
         final UrlQueue urlQueue = CrawlingParameterUtil.getUrlQueue();
         if (urlQueue != null && urlQueue.getEncoding() != null) {
@@ -290,8 +289,8 @@ public class FessXpathTransformer extends AbstractFessXpathTransformer {
         for (final String labelType : crawlingConfig.getLabelTypeValues()) {
             labelTypeSet.add(labelType);
         }
-        final LabelTypeHelper labelTypeHelper = SingletonS2Container
-                .getComponent("labelTypeHelper");
+        final LabelTypeHelper labelTypeHelper = ComponentUtil
+                .getLabelTypeHelper();
         labelTypeSet.addAll(labelTypeHelper.getMatchedLabelValueSet(url));
         putResultDataBody(dataMap, "label", labelTypeSet);
         // role: roleType
@@ -469,8 +468,8 @@ public class FessXpathTransformer extends AbstractFessXpathTransformer {
     protected String replaceOverlappingHost(final String url) {
         try {
             // remove overlapping host
-            final OverlappingHostHelper overlappingHostHelper = SingletonS2Container
-                    .getComponent("overlappingHostHelper");
+            final OverlappingHostHelper overlappingHostHelper = ComponentUtil
+                    .getOverlappingHostHelper();
             return overlappingHostHelper.convert(url);
         } catch (final Exception e) {
             return url;
diff --git a/src/main/java/jp/sf/fess/util/ComponentUtil.java b/src/main/java/jp/sf/fess/util/ComponentUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0ff82a2638f21f0e5bd4689738bc60472951cb0
--- /dev/null
+++ b/src/main/java/jp/sf/fess/util/ComponentUtil.java
@@ -0,0 +1,201 @@
+package jp.sf.fess.util;
+
+import jp.sf.fess.api.WebApiManagerFactory;
+import jp.sf.fess.crypto.FessCipher;
+import jp.sf.fess.ds.DataStoreFactory;
+import jp.sf.fess.helper.CrawlingConfigHelper;
+import jp.sf.fess.helper.CrawlingSessionHelper;
+import jp.sf.fess.helper.DatabaseHelper;
+import jp.sf.fess.helper.DocumentHelper;
+import jp.sf.fess.helper.HotSearchWordHelper;
+import jp.sf.fess.helper.IntervalControlHelper;
+import jp.sf.fess.helper.JobHelper;
+import jp.sf.fess.helper.LabelTypeHelper;
+import jp.sf.fess.helper.MailHelper;
+import jp.sf.fess.helper.OverlappingHostHelper;
+import jp.sf.fess.helper.PathMappingHelper;
+import jp.sf.fess.helper.QueryHelper;
+import jp.sf.fess.helper.SambaHelper;
+import jp.sf.fess.helper.SearchLogHelper;
+import jp.sf.fess.helper.SystemHelper;
+import jp.sf.fess.helper.UserAgentHelper;
+import jp.sf.fess.helper.ViewHelper;
+import jp.sf.fess.job.JobExecutor;
+import jp.sf.fess.solr.IndexUpdater;
+
+import org.codelibs.core.util.DynamicProperties;
+import org.codelibs.solr.lib.SolrGroupManager;
+import org.seasar.framework.container.SingletonS2Container;
+import org.seasar.robot.extractor.ExtractorFactory;
+
+public final class ComponentUtil {
+    private static final String USER_AGENT_NAME = "userAgentName";
+
+    private static final String INDEX_UPDATER = "indexUpdater";
+
+    private static final String DATABASE_HELPER = "databaseHelper";
+
+    private static final String MAIL_HELPER = "mailHelper";
+
+    private static final String EXTRACTOR_FACTORY = "extractorFactory";
+
+    private static final String INTERVAL_CONTROL_HELPER = "intervalControlHelper";
+
+    private static final String DATA_STORE_FACTORY = "dataStoreFactory";
+
+    private static final String USER_AGENT_HELPER = "userAgentHelper";
+
+    private static final String WEB_API_MANAGER_FACTORY = "webApiManagerFactory";
+
+    private static final String DOCUMENT_HELPER = "documentHelper";
+
+    private static final String JOB_HELPER = "jobHelper";
+
+    private static final String OVERLAPPING_HOST_HELPER = "overlappingHostHelper";
+
+    private static final String PATH_MAPPING_HELPER = "pathMappingHelper";
+
+    private static final String HOT_SEARCH_WORD_HELPER = "hotSearchWordHelper";
+
+    private static final String CRAWLING_SESSION_HELPER = "crawlingSessionHelper";
+
+    private static final String CRAWLING_CONFIG_HELPER = "crawlingConfigHelper";
+
+    private static final String SEARCH_LOG_HELPER = "searchLogHelper";
+
+    private static final String LABEL_TYPE_HELPER = "labelTypeHelper";
+
+    private static final String QUERY_HELPER = "queryHelper";
+
+    private static final String SAMBA_HELPER = "sambaHelper";
+
+    private static final String VIEW_HELPER = "viewHelper";
+
+    private static final String SYSTEM_HELPER = "systemHelper";
+
+    private static final String SOLR_GROUP_MANAGER = "solrGroupManager";
+
+    private static final String CRAWLER_PROPERTIES = "crawlerProperties";
+
+    private static final String PROPERTIES_SUFFIX = "Properties";
+
+    private static final String QUERY_RESPONSE_LIST = "queryResponseList";
+
+    private static final String JOB_EXECUTOR_SUFFIX = "JobExecutor";
+
+    private ComponentUtil() {
+    }
+
+    public static FessCipher getCipher(final String cipherName) {
+        return SingletonS2Container.getComponent(cipherName);
+    }
+
+    public static QueryResponseList getQueryResponseList() {
+        return SingletonS2Container.getComponent(QUERY_RESPONSE_LIST);
+    }
+
+    public static DynamicProperties getSolrGroupProperties(
+            final String groupName) {
+        return SingletonS2Container.getComponent(groupName + PROPERTIES_SUFFIX);
+    }
+
+    public static DynamicProperties getCrawlerProperties() {
+        return SingletonS2Container.getComponent(CRAWLER_PROPERTIES);
+    }
+
+    public static SolrGroupManager getSolrGroupManager() {
+        return SingletonS2Container.getComponent(SOLR_GROUP_MANAGER);
+    }
+
+    public static SystemHelper getSystemHelper() {
+        return SingletonS2Container.getComponent(SYSTEM_HELPER);
+    }
+
+    public static ViewHelper getViewHelper() {
+        return SingletonS2Container.getComponent(VIEW_HELPER);
+    }
+
+    public static SambaHelper getSambaHelper() {
+        return SingletonS2Container.getComponent(SAMBA_HELPER);
+    }
+
+    public static QueryHelper getQueryHelper() {
+        return SingletonS2Container.getComponent(QUERY_HELPER);
+    }
+
+    public static LabelTypeHelper getLabelTypeHelper() {
+        return SingletonS2Container.getComponent(LABEL_TYPE_HELPER);
+    }
+
+    public static SearchLogHelper getSearchLogHelper() {
+        return SingletonS2Container.getComponent(SEARCH_LOG_HELPER);
+    }
+
+    public static CrawlingConfigHelper getCrawlingConfigHelper() {
+        return SingletonS2Container.getComponent(CRAWLING_CONFIG_HELPER);
+    }
+
+    public static CrawlingSessionHelper getCrawlingSessionHelper() {
+        return SingletonS2Container.getComponent(CRAWLING_SESSION_HELPER);
+    }
+
+    public static HotSearchWordHelper getHotSearchWordHelper() {
+        return SingletonS2Container.getComponent(HOT_SEARCH_WORD_HELPER);
+    }
+
+    public static PathMappingHelper getPathMappingHelper() {
+        return SingletonS2Container.getComponent(PATH_MAPPING_HELPER);
+    }
+
+    public static OverlappingHostHelper getOverlappingHostHelper() {
+        return SingletonS2Container.getComponent(OVERLAPPING_HOST_HELPER);
+    }
+
+    public static JobHelper getJobHelper() {
+        return SingletonS2Container.getComponent(JOB_HELPER);
+    }
+
+    public static DocumentHelper getDocumentHelper() {
+        return SingletonS2Container.getComponent(DOCUMENT_HELPER);
+    }
+
+    public static WebApiManagerFactory getWebApiManagerFactory() {
+        return SingletonS2Container.getComponent(WEB_API_MANAGER_FACTORY);
+    }
+
+    public static UserAgentHelper getUserAgentHelper() {
+        return SingletonS2Container.getComponent(USER_AGENT_HELPER);
+    }
+
+    public static DataStoreFactory getDataStoreFactory() {
+        return SingletonS2Container.getComponent(DATA_STORE_FACTORY);
+    }
+
+    public static IntervalControlHelper getIntervalControlHelper() {
+        return SingletonS2Container.getComponent(INTERVAL_CONTROL_HELPER);
+    }
+
+    public static ExtractorFactory getExtractorFactory() {
+        return SingletonS2Container.getComponent(EXTRACTOR_FACTORY);
+    }
+
+    public static JobExecutor getJobExecutor(final String name) {
+        return SingletonS2Container.getComponent(name + JOB_EXECUTOR_SUFFIX);
+    }
+
+    public static MailHelper getMailHelper() {
+        return SingletonS2Container.getComponent(MAIL_HELPER);
+    }
+
+    public static DatabaseHelper getDatabaseHelper() {
+        return SingletonS2Container.getComponent(DATABASE_HELPER);
+    }
+
+    public static IndexUpdater getIndexUpdater() {
+        return SingletonS2Container.getComponent(INDEX_UPDATER);
+    }
+
+    public static String getUserAgentName() {
+        return SingletonS2Container.getComponent(USER_AGENT_NAME);
+    }
+}
diff --git a/src/main/java/jp/sf/fess/util/QueryResponseList.java b/src/main/java/jp/sf/fess/util/QueryResponseList.java
index 155483ee20f36cc02bf06120b52c2debf425a6cf..e1376c2fb08c8872403722290951d210b83357c6 100644
--- a/src/main/java/jp/sf/fess/util/QueryResponseList.java
+++ b/src/main/java/jp/sf/fess/util/QueryResponseList.java
@@ -33,7 +33,6 @@ import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.SolrDocument;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.seasar.framework.container.SingletonS2Container;
 import org.seasar.framework.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -109,8 +108,7 @@ public class QueryResponseList implements List<Map<String, Object>> {
             }
 
             // build highlighting fields
-            final QueryHelper queryHelper = SingletonS2Container
-                    .getComponent(QueryHelper.class);
+            final QueryHelper queryHelper = ComponentUtil.getQueryHelper();
             final String hlPrefix = queryHelper.getHighlightingPrefix();
             for (final SolrDocument solrDocMap : sdList) {
                 final Map<String, Object> docMap = new HashMap<String, Object>();
@@ -140,8 +138,7 @@ public class QueryResponseList implements List<Map<String, Object>> {
                 }
 
                 // ContentTitle
-                final ViewHelper viewHelper = SingletonS2Container
-                        .getComponent("viewHelper");
+                final ViewHelper viewHelper = ComponentUtil.getViewHelper();
                 if (viewHelper != null) {
                     docMap.put("contentTitle",
                             viewHelper.getContentTitle(docMap));