2017-05-02 13 views
0

を使用してjava.security.AccessControlExceptionがスローされ、JSPにリダイレクトすると答えGoogleのApp Engineのサーブレットは、私がカワを使用したXQueryスクリプトを実行Google App Engineを、上でJavaサーブレットを実行しているEclipseプラグイン

package com.myserver.servlet; 

import gnu.xquery.lang.XQuery; 
import java.io.FileReader; 
import java.io.IOException; 
import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

public class XQueryTest extends HttpServlet { 
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws IOException, ServletException { 
     XQuery xQuery = new XQuery(); 
     Object result = new String("");  
     try { 
      String realPath = getServletContext().getRealPath("./XQueryTest.xquery"); 
      FileReader fileReader = new FileReader(realPath); 
      result = xQuery.eval(fileReader); 
      request.setAttribute("xQueryTest", result.toString());    
     } catch (Throwable e) { 
      e.printStackTrace(); 
     } 
     RequestDispatcher requestDispatcher = request.getRequestDispatcher("/XQueryTest.jsp"); 
     requestDispatcher.forward(request, response);   
    } 
} 
を表示

これはappspot.comとdev_appserverコマンドを使用して上の細かい動作しますが、プラグインを使ってEclipseで同じサーブレットを実行すると、私はJREの実行中のセキュリティポリシーその理論を持っていたjava.security.AccessControlException

java.security.AccessControlException: access denied ("java.io.FilePermission" "/home/myuser/eclipse/jee-latest/eclipse" "read") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 
    at java.security.AccessController.checkPermission(AccessController.java:884) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:442) 
    at java.lang.SecurityManager.checkRead(SecurityManager.java:888) 
    at java.io.File.isDirectory(File.java:844) 
    at java.io.File.toURI(File.java:732) 
    at gnu.text.FilePath.toUri(FilePath.java:245) 
    at gnu.text.FilePath.toUri(FilePath.java:265) 
    at gnu.text.Path.toURI(Path.java:279) 
    at gnu.xquery.lang.XQParser.fixupStaticBaseUri(XQParser.java:99) 
    at gnu.xquery.lang.XQParser.getStaticBaseUri(XQParser.java:132) 
    at gnu.xquery.lang.XQParser.wrapWithBaseUri(XQParser.java:2722) 
    at gnu.xquery.lang.XQParser.parseXMLConstructor(XQParser.java:2540) 
    at gnu.xquery.lang.XQParser.parseMaybePrimaryExpr(XQParser.java:2954) 
    at gnu.xquery.lang.XQParser.parsePrimaryExpr(XQParser.java:2181) 
    at gnu.xquery.lang.XQParser.parseStepExpr(XQParser.java:2101) 
    at gnu.xquery.lang.XQParser.parsePathExpr(XQParser.java:1816) 
    at gnu.xquery.lang.XQParser.parseIntersectExceptExpr(XQParser.java:1779) 
    at gnu.xquery.lang.XQParser.parseUnionExpr(XQParser.java:1763) 
    at gnu.xquery.lang.XQParser.parseUnaryExpr(XQParser.java:1756) 
    at gnu.xquery.lang.XQParser.parseBinaryExpr(XQParser.java:1671) 
    at gnu.xquery.lang.XQParser.parseExprSingle(XQParser.java:1664) 
    at gnu.xquery.lang.XQParser.parseExpr(XQParser.java:1636) 
    at gnu.xquery.lang.XQParser.parseIfExpr(XQParser.java:3145) 
    at gnu.xquery.lang.XQParser.parseExprSingle(XQParser.java:1652) 
    at gnu.xquery.lang.XQParser.parseExpr(XQParser.java:1636) 
    at gnu.xquery.lang.XQParser.parseEnclosedExpr(XQParser.java:2413) 
    at gnu.xquery.lang.XQParser.parseFunctionDefinition(XQParser.java:3620) 
    at gnu.xquery.lang.XQParser.parse(XQParser.java:3784) 
    at gnu.xquery.lang.XQuery.parse(XQuery.java:147) 
    at gnu.expr.Language.parse(Language.java:702) 
    at gnu.expr.Language.parse(Language.java:656) 
    at gnu.expr.Language.eval(Language.java:1122) 
    at gnu.expr.Language.eval(Language.java:1063) 
    at gnu.expr.Language.eval(Language.java:1053) 
    at com.myserver.servlet.XQueryTest.doGet(XQueryTest.java:30) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
    at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:128) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) 
    at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:95) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:508) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

をスローします日食はeclipse.ini内のJREのjava.policyおよびjavaws.policyへのアクセス権を追加することで違いはありませんでした。

-vm 
/usr/lib/jvm/java-8-oracle/jre/bin 

私は、サーブレットがで正しく実行できるようにすべきであるどのような変更日食火星とJavaでこれがうまく働い1.7

をGoogleクラウドプラットフォームのプラグイン の日食酸素とバージョン1.0.3.201704111618を使用していますEclipse?

答えて

1

は、Eclipse IDEをどこで起動したかのようです。その場合、そのディレクトリは、Google Cloud Tools for Eclipse(CT4E)プラグインのローカルの開発サーバーの作業ディレクトリになります。問題は、XQueryが内部的にサーブレット・コンテキスト外のファイルにアクセスしようとしている可能性があります。これは、XQueryがEclipseの作業ディレクトリをベースにしている可能性があるためです。正しい作業ディレクトリを設定して問題が解決するかどうかを確認するには、次の回避策を試すことができますか?

Cannot access file using relative path in local test when developing Google App Engine applications

UPDATE:私たちは(あなたは、単一のローカルサーバで複数のプロジェクトを実行しない限り)自動的に適切に作業ディレクトリを設定するCT4Eを固定し、固定バージョンがロールアウト一度あなたが、回避策は必要ありません。

+0

これは問題を修正しました。ありがとうございます。私はEclipseからサーバーを起動して問題なく接続できます –

関連する問題