在 weblogic 中部署 war 时 fileupload 不工作,但在部署爆炸 war 文件夹时工作
fileupload not working when war is deployed in weblogic but working if exploded war folder is deployed
我 运行 是个问题。我在部署在 weblogic 中的应用程序中使用了 ICEFaces jar。当我部署 war 并尝试上传 war 时,它不起作用,我能够捕获以下异常。但是,当我在 weblogic 中部署展开的 war 文件夹时,它不起作用。因为它正在为爆炸的 war 文件夹工作,所以我觉得它无法在它想要上传文件的地方创建一个文件夹。我需要配置什么来解决这个问题吗?
部分web.xml:
<context-param>
<param-name>com.icesoft.faces.uploadDirectory</param-name>
<param-value>/upload</param-value>
</context-param>
jsp的一部分
<ice:inputFile
submitOnUpload="postUpload" id="inputFileComponent"
actionListener="#{uploadAction.uploadActionListener}"
action="#{uploadAction.doUploadFile}" />
其中 uploadAction 是动作 class 具有方法 uploadActionListener() 作为动作侦听器和 doUploadFile 作为动作映射
堆栈跟踪
com.icesoft.faces.webapp.xmlhttp.PersistentFacesState [pool-2-thread-1] Exception occured during execute push on /jsp/upload.jspx
javax.faces.el.EvaluationException: /jsp/upload.jspx @64,48 actionListener="#{uploadAction.uploadActionListener}": java.lang.NullPointerException
at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73)
at javax.faces.component.UICommand.broadcast(UICommand.java:131)
at com.icesoft.faces.component.inputfile.InputFile.broadcast(InputFile.java:152)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:115)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:191)
at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.execute(PersistentFacesState.java:286)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.executeAndRender(PersistentFacesState.java:314)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.setupAndExecuteAndRender(PersistentFacesState.java:326)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState$RenderRunner.run(PersistentFacesState.java:450)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:134)
at java.io.FileReader.<init>(FileReader.java:72)
你走在正确的轨道上。部署展开的 WAR 会创建一个可写的目录结构,但仅部署 WAR 不会这样做,并且您无法在 WAR.
中创建目录
所以您需要将文件上传目录放在一个固定的位置。参见:How to specify an absolute path for com.icesoft.faces.uploadDirectory
我 运行 是个问题。我在部署在 weblogic 中的应用程序中使用了 ICEFaces jar。当我部署 war 并尝试上传 war 时,它不起作用,我能够捕获以下异常。但是,当我在 weblogic 中部署展开的 war 文件夹时,它不起作用。因为它正在为爆炸的 war 文件夹工作,所以我觉得它无法在它想要上传文件的地方创建一个文件夹。我需要配置什么来解决这个问题吗?
部分web.xml:
<context-param>
<param-name>com.icesoft.faces.uploadDirectory</param-name>
<param-value>/upload</param-value>
</context-param>
jsp的一部分
<ice:inputFile
submitOnUpload="postUpload" id="inputFileComponent"
actionListener="#{uploadAction.uploadActionListener}"
action="#{uploadAction.doUploadFile}" />
其中 uploadAction 是动作 class 具有方法 uploadActionListener() 作为动作侦听器和 doUploadFile 作为动作映射
堆栈跟踪
com.icesoft.faces.webapp.xmlhttp.PersistentFacesState [pool-2-thread-1] Exception occured during execute push on /jsp/upload.jspx
javax.faces.el.EvaluationException: /jsp/upload.jspx @64,48 actionListener="#{uploadAction.uploadActionListener}": java.lang.NullPointerException
at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73)
at javax.faces.component.UICommand.broadcast(UICommand.java:131)
at com.icesoft.faces.component.inputfile.InputFile.broadcast(InputFile.java:152)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:115)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:191)
at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.execute(PersistentFacesState.java:286)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.executeAndRender(PersistentFacesState.java:314)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState.setupAndExecuteAndRender(PersistentFacesState.java:326)
at com.icesoft.faces.webapp.xmlhttp.PersistentFacesState$RenderRunner.run(PersistentFacesState.java:450)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:134)
at java.io.FileReader.<init>(FileReader.java:72)
你走在正确的轨道上。部署展开的 WAR 会创建一个可写的目录结构,但仅部署 WAR 不会这样做,并且您无法在 WAR.
中创建目录所以您需要将文件上传目录放在一个固定的位置。参见:How to specify an absolute path for com.icesoft.faces.uploadDirectory