3

Glassfish 2.1で実行されている2つのサーバーがあり、どちらも同じWebアプリを持っています。

このエラーが2回発生しました。一部のjspページは空白のページのみを表示しなくなり、次のエラーがログに出力されます。

PWC1231:サーブレットjspのServlet.service()が例外java.io.FileNotFoundExceptionをスローしました:/path/to/jsp/file/jsp_file.jsp.java(パーミッション拒否)at java.io.FileOutputStream.open(Native Method)at java .io.FileOutputStream。(FileOutputStream.java:179)at java.io.FileOutputStream。(FileOutputStream.java:70)at org.apache.jasper.compiler.AntJavaCompiler.getJavaWriter(AntJavaCompiler.java:213)atorg.apache。 jasper.compiler.Compiler.generateJava(Compiler.java:173)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:409)at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)、org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470)、org.apache.jasper.servlet.JspServlet。service(JspServlet.java:364)at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)at org.apache.catalina .core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:855)at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:703)at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:542 )org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:474)at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:366)atorg.apache.struts.action.RequestProcessor。 org.apache.struts.tiles.TilesRequestProcessorのdoForward(RequestProcessor.java:1056)。doForward(TilesRequestProcessor.java:261)at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)at org.apache .struts.action.RequestProcessor.process(RequestProcessor.java:231)at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java :415)at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)at org.apache.catalina.core.ApplicationFilterChain.servletService( ApplicationFilterChain.java:411)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)atorg。apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)at com.my.app.filtro.FiltroCallcenter.doFilter(FiltroCallcenter.java:90)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain。 java:230)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)at org.apache.catalina.core .StandardContextValve.invokeInternal(StandardContextValve.java:271)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)at com.sun.enterpriseのorg.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)。web.WebPipeline.invoke(WebPipeline.java:94)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632) org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)at org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:1080)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)atorg.apache。 catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)atorg.apache.catalina.core。ContainerBase.invoke(ContainerBase.java:1080)at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java: 637)com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)at com .sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)at com.sun.enterprise .web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)

これに続いて:

PWC6344:ファイル/path/to/jsp/file/jsp_file.jsp.java|#]の出力ライターを作成できません

PWC6344エラーのみが出力される場合もあれば、両方が出力される場合もあります。PWC1231エラーの後には常にPWC6344が続きます(IOExceptionが発生すると例外がスローされるため、これはある程度意味があります)。

どちらの場合も、このエラーが発生しました。インスタンスを停止して開始するだけで、すべてが正常に実行されました。また、このエラーは1台のサーバーでのみ発生しました。

何が起こっているのですか?...または、これを引き起こしている原因を診断して、永遠に停止して再開する代わりに問題を修正できるようにするにはどうすればよいですか...

更新:

sbridgesが示唆しているように、これがファイル記述子の問題である可能性を調査していましたが、ファイルハンドラーの最大数は811975で、一方のサーバーで4520のファイルが開かれ、もう一方のサーバーでは359532のファイルが開かれています。

だから、これは問題ではないと言っても安全だと思います!

誰かが別の理論を持っていますか?

4

3 に答える 3

1

権限が正しく設定されておらず、コンパイルされたjspページをディスクに書き込めないようです。

/path/to/jsp/file/jsp_file.jsp.java (Permission denied) 

そのディレクトリ/ファイルの権限は正しいですか?

于 2013-04-16T02:42:44.060 に答える
1

名前をに変更jsp_file.jsp.javajsp_file.jspます。

于 2013-04-16T02:57:50.857 に答える
1

PWC6344:ファイル/path/to/jsp/file/jsp_file.jsp.java|#]の出力ライターを作成できません

これは、基盤となるオペレーティングシステムで、読み取りまたは書き込み用にファイルを開くために必要なファイルハンドラー/記述子が不足している場合にも発生する可能性があります。私はCentOSに精通していませんが、検索結果でのCentOSに関連する多くの問題を考えると、CentOSの「比較的低い」制限は1024であるとGoogleは示唆しています。結果の中には、次のブログのように、それを増やす方法に関する多くの質問/回答が表示されます。

CentosおよびFedoraLinuxでファイル記述子の数を増やします

CentOS / Fedora / Redhatで通常のユーザーのファイル記述子の数を増やすことは、その方法を学ぶのが驚くほど難しいことです。Webには不完全なウォークスルーがたくさんあり、タイプミスやその他の問題があるものもあります。

開いているファイル記述子の制限を1024(デフォルト)から65535に上げるために私が働いた手順は次のとおりです。

  1. rootとして、/ etc / sysctl.confを編集し、次の行を追加します。

     fs.file-max = 512000
    
  2. bashプロンプトで、次のコマンドを実行します。

     $ sysctl -p
    

    これにより、設定が有効になります。できますcat 512000 > /proc/sys/fs/file-maxが、再起動時にリセットされる場合があります。

  3. /etc/security/limits.confを編集して、以下を追加します。

     * - nofile 65535
    

    それが何をするか、そして必要に応じてそれをより制限的にする方法の詳細については、インラインコメントを参照してください。

  4. ルートとして、を実行します

     $ ulimit -n 65535
    

    エラーがないことを確認してください。再確認するには、実行ulimit -nして、応答が65535であることを確認します。

  5. SSHに対してPAM認証がオンになっていることを確認してください。オンになっていないと、通常のユーザーとして接続しようとしたときに、新しい制限が表示されません。/ etc / ssh / sshd_configを編集して、次のことを確認します。

     UsePAM yes
    

    /sbin/service sshd restart変更を加えた場合は、SSHを再起動します。

  6. 新しいSSHセッションとシェルを使用して通常のユーザーとしてログインし、次のコマンドを実行します。

     $ ulimit -n 65535
    

    もう一度走っulimit -nてチェックして頑張ってください!

于 2013-04-17T15:48:47.200 に答える