标签: spark-java

SparkJava自定义错误页面

有没有人知道如何在使用Spark微型Web框架时覆盖现有的404错误页面?

默认的错误页面:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 404 </title>
</head>
<body>
<h2>HTTP ERROR: 404</h2>
<p>Problem accessing /strangepage. Reason:
<pre>    Not Found</pre></p>
<hr /><i><small>Powered by Jetty://</small></i>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想编辑此自定义错误页面(或者可能将其重定向到另一个路径):

get(new Route("/404") {
   @Override
   public Object handle(Request request, Response response) {
       response.type("text/html");
       return "Error page 404";
   }
});
Run Code Online (Sandbox Code Playgroud)

spark-java

5
推荐指数
1
解决办法
5481
查看次数

如何通过Eclipse插件将SparkJava REST API应用程序部署到Google App Engine?

我使用SparkJava为我的项目构建了一个REST API,现在我想将它部署到Google App Engine.但是在Eclipse中安装Google App Engine插件后,我不知道如何做到这一点.我已将我之前项目中的src文件复制到新的Web应用程序项目,并将main()重命名为init(),如http://www.sparkjava.com/readme.html#title18所述,我还更新了web.xml如上所述.但该项目没有运行.请指导!

java google-app-engine spark-java

5
推荐指数
0
解决办法
986
查看次数

如何通过SparkJava更改Jetty设置?/表格太大异常/ org.eclipse.jetty.server.Request.maxFormContentSize

我正在使用使用Jetty 9.0.2的SparkJava 2.2.

我得到Jetty抛出的"Form too large"异常.如果我直接使用Jetty,我已经知道如何解决这个问题:

形式太大例外

http://www.eclipse.org/jetty/documentation/current/setting-form-size.html

问题:

现在我需要找到一种org.eclipse.jetty.server.Request.maxFormContentSize通过SparkJava 更改设置的方法.有没有办法做到这一点?

我必须注意其他方法(JVM_OPTS,System.setProperty)由于某些原因不适合我.我仍然得到同样的例外.

堆栈跟踪:

[qtp1858644635-27] ERROR spark.webserver.MatcherFilter -
java.lang.IllegalStateException: Form too large 308913>200000
    at org.eclipse.jetty.server.Request.extractParameters(Request.java:334)
    at org.eclipse.jetty.server.Request.getParameterMap(Request.java:765)
    at javax.servlet.ServletRequestWrapper.getParameterMap(ServletRequestWrapper.java:193)
    at spark.QueryParamsMap.<init>(QueryParamsMap.java:59)
    at spark.Request.initQueryMap(Request.java:364)
    at spark.Request.queryMap(Request.java:349)
    at spark.webserver.RequestWrapper.queryMap(RequestWrapper.java:213)
    at com.xyz.analytics.webservice.RequestTools.getRequestQueryMap(RequestTools.java:27)
    at com.xyz.analytics.webservice.RequestTools.getMandrillQueryParams(RequestTools.java:22)
    at com.xyz.analytics.webservice.Endpoints.lambda$initiateEndpointsAndExceptionHandlers$2(Endpoints.java:61)
    at com.xyz.analytics.webservice.Endpoints$$Lambda$3/1485697819.handle(Unknown Source)
    at spark.SparkBase$1.handle(SparkBase.java:311)
    at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:159)
    at spark.webserver.JettyHandler.doHandle(JettyHandler.java:60)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:179)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:136)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:451)
    at org.eclipse.jetty.server.HttpChannel.run(HttpChannel.java:252)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:266)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.run(AbstractConnection.java:240)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:596)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:527)
    at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

编辑:

我必须注意其他方法(JVM_OPTS,System.setProperty)对我不起作用.

好吧,调试器甚至不会在任何设置的断点处停止org.eclipse.jetty.server.handlerContextHandler...加上当它在org.eclipse.jetty.server.Request断点处停止时,_context属性为null.似乎SparkJava以不同的方式处理它.死路. …

java jetty embedded-jetty spark-java

5
推荐指数
1
解决办法
3393
查看次数

刷新SparkJava提供的静态文件

我正在使用Spark Java做一个项目.在服务器端,创建了一些图像,我希望它们在客户端中可用.由于我有一个静态内容目录,在服务器端创建映像后,我将它放在该目录中.但是,除非我重新启动服务器,否则此文件不可用.我想必须有一种方法可以在运行时刷新Spark Java的静态目录文件,以便可以实现运行时创建的映像请求.对?

谢谢!

java static-files spark-java server

5
推荐指数
2
解决办法
1213
查看次数

如何在AWS Elastic Beanstalk上安装/运行Spark Java Framework?

通常,我使用Tomcat或Glassfish构建一个Java Web应用程序到WAR(Web应用程序存档文件).只需单击几下,即可通过Elastic Beanstalk轻松将此文件部署到AWS中.集成很简单,因为Elastic Beanstalk允许我们在Tomcat/Glassfish/Java上部署Web应用程序.

我最近开始使用名为Spark的轻量级Java框架,www.sparkjava.com.是否可以通过几次点击在Elastic Beanstalk上部署它?如果没有,是否可以轻松地将Spark Java Web应用程序部署到AWS上?或者,我是否需要创建EC2实例,复制JAR应用程序,并通过命令行启动JAR Web应用程序?

java amazon-ec2 amazon-web-services spark-java amazon-elastic-beanstalk

5
推荐指数
1
解决办法
1334
查看次数

java如何在apache服务器中运行spark app

我有一个Spark MVC应用程序,非常简单.

根据spark文档,这应该足以运行应用程序:

public class SparkServer {
    public static void main(String args[]) {
        Spark.staticFileLocation("src/main/webapp");
        System.out
                .println("bla bla bla");
        RService rService = new SparqlRService();
        new RController(rService);
    }
}
Run Code Online (Sandbox Code Playgroud)

我将该类放在项目中的一个包中,然后在Apache Tomcat服务器上运行Web应用程序(动态Web应用程序).

运行Apache Tomcat时不会出现print语句,这意味着此类未被调用.我知道这很有道理.这就是我要问的原因.请问如何让Apache Tomcat运行我的spark应用程序?

更新

之后@mlk答案,我做了以下内容:

public class SparkServer implements SparkApplication {

    @Override
    public void init() {
        Spark.staticFileLocation("src/main/webapp");
        System.out
                .println("bla bla lba");
        RService rService = new SparqlRService();
        new RController(rService);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的web.xml中我做了:

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">
    <display-name>SRecommender</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file> …
Run Code Online (Sandbox Code Playgroud)

java apache tomcat spark-java

5
推荐指数
1
解决办法
920
查看次数

Java Spark/Velocity Templates/SQL2o

我正在将Spark Java Web Framework与Apache的Velocity Template Engine结合使用,以帮助设计一个从SQL数据库中提取数据的响应式Web应用程序.使用SQL2o我创建了一些自定义类类型的Java对象,即用户,组,站点等.

我已经检查过并填充了创建的对象列表.当我然后将我的对象列表放入一个hashmap并返回一个ModelandView时,出于某种原因我的列表就在那里但我不能在vtl中使用它的任何属性.

main方法和Spark代码的相关部分:

public static void main(String[] args) {

        WEB_LOGMGR loggr = new WEB_LOGMGR(true);
        WEB_DBMGR dbmgr = new WEB_DBMGR(true, loggr);
        Model backend = new ScadaModel(dbmgr, loggr);

        System.out.println(dataToJson(backend.getUsers()));

        staticFiles.location("/");
        staticFiles.externalLocation("/");
        String layout = "/templates/layout.vtl";
        //secure("public/keystore.jks", "password", null, null);

        before("/form", (request, response) -> {
            boolean authenticated = false;
            // ... check if authenticated
            if (!authenticated) {
                halt(401, "You are not welcome here");
            }
        });

        get("/", (req, res) -> {
            HashMap pdata = new HashMap();
            pdata.put("template", "/templates/main.vtl");
            return …
Run Code Online (Sandbox Code Playgroud)

java list vtl spark-java

5
推荐指数
1
解决办法
230
查看次数

Eclipse远程调试spark-submit

我想对使用Windows中的命令提示符提交给Spark的应用程序进行远程调试.请你帮助我好吗?

我可以提供的任何地方Spark启动远程调试端口.

spark-java apache-spark

5
推荐指数
1
解决办法
2850
查看次数

如何读取客户端使用Spark发送的数据?

我必须使用Spark(Java框架)读取客户端发送的一些数据.

这是客户的帖子请求代码.我正在使用jQuery.

$.post("/insertElement", 
{item:item.value, value: value.value, dimension: dimension.value });
Run Code Online (Sandbox Code Playgroud)

服务器代码:

post(new Route("/insertElement") {
        @Override
        public Object handle(Request request, Response response) {
            String item = (String) request.attribute("item");
            String value = (String) request.attribute("value");
            String dimension = (String) request.attribute("dimension");
            Element e = new Element(item, value, dimension);
            ElementDAO edao = new ElementDAO();
            edao.insert(e);
            JSONObject json = JSONObject.fromObject( e );
            return json; 
        }
    });
Run Code Online (Sandbox Code Playgroud)

我正在使用Spark,所以我只需要定义路线.我想在数据库中存储客户端发送的数据,但所有属性都为null.

我认为这种方式不正确.如何读取发送的数据?

javascript jquery httprequest spark-java

4
推荐指数
1
解决办法
6847
查看次数

从命令行使用 curl 时会话死亡

我使用sparkjava 开发了一个简单的 java web 应用程序。它包含 GET 和 POST 请求。我制作了自己的简单身份验证脚本,它使用秘密密码对用户进行身份验证并将用户名存储在会话中:

    /*
    Make sure authenticated
    */
    before((req, res) -> {
        boolean authenticated = false;
        if ( req.session().attribute("user") != "casumo_user" ) {
            try{
                if (req.queryParams("secret").equals(System.getenv().get("SECRET"))){
                    authenticated = true;
                    req.session().attribute("user","casumo_user");
                }
            }catch (Exception e){
                halt(401, "{\"error\":\"Please Authenticate.\"}");
            }
        }else{
            authenticated = true;
        }

        if (!authenticated) {
            halt(401, "{\"error\":\"Please Authenticate.\"}");
        }
    });
Run Code Online (Sandbox Code Playgroud)

我正在使用Postman Add-on for Chrome,这工作正常。我将进行一次身份验证,服务器将让我的会话保持活动状态以供后续请求使用。

问题是我想使用 curl 来发出相同的请求,但是会话并没有从一个请求到另一个请求保持活动状态。

例如,我首先使用这个命令:

curl -s -L --data "secret=secret_password" url/auth | jsonpp 
Run Code Online (Sandbox Code Playgroud)

{ "msg": "已通过身份验证!您现在可以提出请求了。" …

java authentication session curl spark-java

4
推荐指数
1
解决办法
1717
查看次数