簡體   English   中英

在 JBOSS 7 中部署 Struts 2 項目

[英]Deploying Struts 2 project in JBOSS 7

我在 Jboss 7.1.1 final 中部署我的 Web 應用程序時遇到問題。 在部署它時給了我很多警告,如下所示:

12:41:29,961 INFO  [org.springframework.web.context.ContextLoader] (MSC service thread 1-6) Root WebApplicationContext: initialization completed in 132 ms
12:41:30,169 WARN  [com.opensymphony.xwork2.util.FileManager] (MSC service thread 1-6) Could not create JarEntryRevision for [vfs:/content/Gurukul.war/WEB-INF/lib/struts2-core-2.2.1.1]!: java.util.zip.ZipException: error in opening zip file
    at java.util.zip.ZipFile.open(Native Method) [rt.jar:1.6.0_24]
    at java.util.zip.ZipFile.<init>(ZipFile.java:131) [rt.jar:1.6.0_24]
    at java.util.jar.JarFile.<init>(JarFile.java:150) [rt.jar:1.6.0_24]
    at java.util.jar.JarFile.<init>(JarFile.java:114) [rt.jar:1.6.0_24]
    at com.opensymphony.xwork2.util.FileManager$JarEntryRevision.build(FileManager.java:307) [xwork-core-2.2.1.1.jar:2.2.1.1]
    at com.opensymphony.xwork2.util.FileManager.loadFile(FileManager.java:145) [xwork-core-2.2.1.1.jar:2.2.1.1]
    at com.opensymphony.xwork2.util.FileManager.loadFile(FileManager.java:105) [xwork-core-2.2.1.1.jar:2.2.1.1]
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:898) [xwork-core-2.2.1.1.jar:2.2.1.1]
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:154) [xwork-core-2.2.1.1.jar:2.2.1.1]
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:121) [xwork-core-2.2.1.1.jar:2.2.1.1]
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:179) [xwork-core-2.2.1.1.jar:2.2.1.1]
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66) [xwork-core-2.2.1.1.jar:2.2.1.1]
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:371) [struts2-core-2.2.1.1.jar:2.2.1.1]
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:415) [struts2-core-2.2.1.1.jar:2.2.1.1]
    at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69) [struts2-core-2.2.1.1.jar:2.2.1.1]
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51) [struts2-core-2.2.1.1.jar:2.2.1.1]
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:447) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3269) [jbossweb-7.0.13.Final.jar:]
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:3865) [jbossweb-7.0.13.Final.jar:]
    at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.6.0_24]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.6.0_24]
    at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_24]

但最終戰爭被部署了,我能夠在 Jboss 7.1.1 final 中打開 URL。 但是當我嘗試登錄應用程序時,它給了我以下錯誤。

控制台輸出:

12:42:08,199 INFO  [com.ericsson.tni.action.AuthorizationAction]  Entered login
12:42:08,201 INFO  [com.ericsson.tni.action.AuthorizationAction]  Authentication Started For User : etapguh
12:42:08,201 INFO  [com.ericsson.tni.action.AuthorizationAction]  Authentication Result : success
12:42:08,202 INFO  [com.ericsson.tni.action.AuthorizationAction]  Initiating authorisation : 
12:42:08,202 ERROR [stderr]  java.lang.NullPointerException
12:42:08,203 ERROR [stderr]     at com.ericsson.tni.action.AuthorizationAction.login(AuthorizationAction.java:92)
12:42:08,203 ERROR [stderr]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12:42:08,203 ERROR [stderr]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
12:42:08,204 ERROR [stderr]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
12:42:08,204 ERROR [stderr]     at java.lang.reflect.Method.invoke(Method.java:616)
12:42:08,204 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
12:42:08,205 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
12:42:08,205 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
12:42:08,205 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
12:42:08,206 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
12:42:08,206 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,206 ERROR [stderr]     at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
12:42:08,207 ERROR [stderr]     at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
12:42:08,207 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
12:42:08,208 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,208 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
12:42:08,208 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,209 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
12:42:08,209 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
12:42:08,209 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,210 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
12:42:08,210 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
12:42:08,210 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,211 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
12:42:08,211 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,212 ERROR [stderr]     at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
12:42:08,212 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,212 ERROR [stderr]     at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
12:42:08,213 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,213 ERROR [stderr]     at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
12:42:08,213 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,214 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
12:42:08,214 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,215 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
12:42:08,215 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,216 ERROR [stderr]     at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
12:42:08,216 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,217 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:142)
12:42:08,217 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,218 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:166)
12:42:08,218 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
12:42:08,219 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,219 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
12:42:08,219 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,219 ERROR [stderr]     at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
12:42:08,220 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,220 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
12:42:08,220 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,221 ERROR [stderr]     at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
12:42:08,221 ERROR [stderr]     at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
12:42:08,222 ERROR [stderr]     at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
12:42:08,222 ERROR [stderr]     at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485)
12:42:08,222 ERROR [stderr]     at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
12:42:08,222 ERROR [stderr]     at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
12:42:08,223 ERROR [stderr]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
12:42:08,223 ERROR [stderr]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
12:42:08,224 ERROR [stderr]     at com.ericsson.tni.web.interceptor.LoginFilter.doFilter(LoginFilter.java:47)
12:42:08,224 ERROR [stderr]     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280)
12:42:08,224 ERROR [stderr]     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
12:42:08,224 ERROR [stderr]     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
12:42:08,225 ERROR [stderr]     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
12:42:08,225 ERROR [stderr]     at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153)
12:42:08,225 ERROR [stderr]     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
12:42:08,226 ERROR [stderr]     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
12:42:08,226 ERROR [stderr]     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
12:42:08,226 ERROR [stderr]     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368)
12:42:08,227 ERROR [stderr]     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
12:42:08,227 ERROR [stderr]     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671)
12:42:08,227 ERROR [stderr]     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930)
12:42:08,227 ERROR [stderr]     at java.lang.Thread.run(Thread.java:679)
12:42:08,228 ERROR [com.ericsson.tni.action.AuthorizationAction]  null

相同的項目在 Tomcat 7 中運行得非常好。

代碼片段:

@Action(TNIBeans.AUTHORIZATION_ACTION)
@Scope(TNIBeans.BEAN_SCOPE)
public class AuthorizationAction extends ActionSupport implements SessionAware,ServletRequestAware {

    private InputStream inputStream;
    /**
     * Logger for this class
     */
    private static final Logger logger = Logger
            .getLogger(AuthorizationAction.class);
    @Autowired
    private XStream xstream;
    
    public void logException(String message) {
        logger.error(message);
    }

    public void log(String msg) {
        logger.info(msg);
    }
    
    HttpServletRequest request = null;

    @Autowired
    @Qualifier(TNIBeans.EMPLOYEE_SERVICE_IMPL)
    private EmployeeService employeeServiceImpl;
    @Autowired
    @Qualifier(TNIBeans.CODE_SERVICE_IMPL)
    private CodeMasterService codeMasterService;
    
    Map<String,Map<String,String>> codeMaster = null;
    private String strResult = null;

    private static final long serialVersionUID = -8517227229292215672L;

    private Map<String, Object> session = null;
    private Employee emp = null;
    
    private String userName;
    private String password;
    private String roles;
    private String responseMsg;

    public String login () throws Exception {
        log("Entered login");
        if (logger.isDebugEnabled()) {
            logger.debug("execute() - start.....");
        }
        try {
            log("Authentication Started For User : "+userName);
        //  employeeServiceImpl.authenticate(userName, password);
            inputStream = new ByteArrayInputStream("success".getBytes("UTF-8"));
            log("Authentication Result : success");
            log("Initiating authorisation : ");  // This is printed in Console output if u observe (ie, till here the code                                  executed properly)

    // It couldn't create instance of "employeeServiceImpl" interface defined above..... 

            emp = employeeServiceImpl.authorize(userName);

授權函數的另一個代碼片段:

@Override
    public Employee authorize(String signum) throws BusinessException {
        System.out.println("Hi Tapo..."+signum); // this is not printed in console output if u observe (ie, controller doesn't                                  enter authorize function) 
        logger.info("authorize : "+signum);
        Employee emp = null;
        try{
            emp = findRoles(signum);
            if (WebConstants.adminSignum.equalsIgnoreCase(signum)) {
                emp.setSignum(signum);
                emp.setName("System Administrator");
                emp.setRoles(Role.LnCD_ADMIN);
                emp.setRoles(Role.LnCD_DELEGATE);
                emp.setRoles(Role.SYS_ADMIN);
            }
            return emp;
        }catch(BusinessException e){
            throw new BusinessException(e.getMessage());
        }catch(Exception e){
            throw new BusinessException(e.getMessage());
        }
    }   

這些警告僅在 devMode(=true) 期間可用,如果您不使用 Convention 插件,一切都應該沒問題。

從 Struts 2 的 2.3.1 版開始添加了對 JBoss 7 的適當支持。

根據與部署文件夾中的 jboss server.log文件相關的控制台輸出,您在AuthorizationAction的方法login中有java.lang.NullPointerException 並且異常發生在語句中

emp = employeeServiceImpl.authorize(userName); 

也就是說, employeeServiceImplnull 如果它不為null那么我們就會在日志中看到"Hi Tapo..." 沒有發生類似的事情。

那么employeeServiceImpl是一個通過Spring 應用程序上下文初始化的屬性。 即使您沒有在這里發布aplicationContext.xml我也假設其中有 bean 定義。 然后它應該被注入,再次假設這也有效,因為你說它在Tomcat服務器上運行良好。

因此,只有在 bean 創建失敗時才會發生這種情況。 這正是您不應該阻止的NullPointerException的情況。

那一刻我們只知道employeeService bean 失敗了。 我們沒有消息來源。 你沒有發布它。 然后我們需要日志文件中的其他異常來查找未創建 bean 的原因。 也沒收到。

因此,找出在 JBoss 7 上的 Tomcat 7 中部署工作應用程序的唯一方法。發生的事情是,一些集成框架的行為與預期略有不同。 並且它們成為加載在 Tomcat 下未使用的附加庫。 這是因為 JBoss 的功能在 Tomcat 中不可用。 最后我發現我的資源停止加載,因為 JBoss 使用vsf協議返回 URL。 甚至我的應用程序也理解vsfzip協議,我需要添加這些協議才能使其工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM