标签: spark-java

如何在Eclipse中向Maven项目添加Spark?

我想使用Maven在Eclipse中启动Spark项目.我安装了m2eclipse,我在Maven项目中有一个工作的HelloWorld Java应用程序.

我想使用Spark框架,我正在遵循官方网站的指示.我已将Spark存储库添加到我的pom.xml:

<repository>
      <id>Spark repository</id>
      <url>http://www.sparkjava.com/nexus/content/repositories/spark/</url>
</repository>
Run Code Online (Sandbox Code Playgroud)

然后依赖:

<dependency>
      <groupId>spark</groupId>
      <artifactId>spark</artifactId>
      <version>0.9.9.4-SNAPSHOT</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但我在Eclipse中遇到错误:

Missing artifact spark:spark:jar:0.9.9.4-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我不想下载Spark的jar文件并放在本地存储库中.

这是我的pom.xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.myproject</groupId>
  <artifactId>Spark1</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Spark1</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <repository>
      <id>Spark repository</id>
      <url>http://www.sparkjava.com/nexus/content/repositories/spark/</url>
  </repository>

  <dependencies>
<!--     (...) -->

    <dependency>
      <groupId>spark</groupId>
      <artifactId>spark</artifactId>
      <version>0.9.9.4-SNAPSHOT</version>
    </dependency>

  </dependencies>

</project>
Run Code Online (Sandbox Code Playgroud)

eclipse maven spark-java

7
推荐指数
3
解决办法
3万
查看次数

使用spark将POST主体解析为java对象

我从春天迁移到火花前,现在我陷入了基本的困境.

当我发出POST请求在正文中发送数据时,我希望将JAVA对象放回控制器中.

在春天我曾经做过

@RequestBody User user
Run Code Online (Sandbox Code Playgroud)

它被自动"填充"了..

现在有火花我有方法:

request.body();
Run Code Online (Sandbox Code Playgroud)

但是这给了我一个像这样的序列化字符串:

id=7&name=Pablo+Mat%C3%ADas&lastname=Gomez&githubUsername=pablomatiasgomez

那么我怎样才能获得用户DTO?

当然,User类具有属性

  • ID
  • 名称
  • githubUsername

java spring spark-java

7
推荐指数
1
解决办法
8033
查看次数

Spark Web框架单元测试

我正在使用Spark Web框架并创建RESTful API.(http://sparkjava.com因为有很多东西叫做"Spark")

我的雇主的标准要求我们编写一系列单元测试,每天自动运行一次,以确认应用程序仍在运行.

Spark很容易使用像Postman这样的工具来测试自己,但是我没有找到任何JUnit使用Spark编写测试的好例子,甚至没有使用它以编程方式编写HTTP请求.

有没有人这样做过?可能吗?

java junit unit-testing spark-java

7
推荐指数
2
解决办法
2088
查看次数

Java Spark是否为依赖注入或IoC容器提供任何支持?

在.NET工作之后,我非常精通NancyFX和Web API等微型Web框架对IoC容器的支持.

在像Sinatra这样的Ruby类似框架中(NancyFX基于Sinatra),似乎你有依赖注入的能力.

从我看到的,因为Java spark应用程序作为主要方法运行,似乎你不能传入依赖项或IoC容器.

public class HelloWorld {
    public static void main(String[] args) {
        get("/hello", (req, res) -> "Hello World");
    }
}
Run Code Online (Sandbox Code Playgroud)

我很难理解这样的框架在没有支持的情况下如何有用.

如果这个框架没有,那么是否有另一个轻量级框架(Spring不是我记忆中的轻量级框架,但可能已经发生了变化),它确实支持这个吗?

java dependency-injection spark-java

7
推荐指数
3
解决办法
6598
查看次数

在SparkJava中为静态文件添加`before`过滤器

我在Spark应用程序中为静态文件指定了一个位置:

Spark.staticFileLocation("/public")
Run Code Online (Sandbox Code Playgroud)

现在我想为某些文件添加一个过滤器(例如出于安全目的),但它不起作用:

Spark.before("/admin.html", myFilter);
Run Code Online (Sandbox Code Playgroud)

但是,对于非静态映射,它确实有效.是否可以为静态文件配置这样的过滤器?

换句话说,Spark保护静态文件(如管理页面的模板)在没有身份验证的情况下暴露的最佳做法是什么?

java spark-java

7
推荐指数
1
解决办法
2216
查看次数

在库中捆绑log4j.properties - 坏样式还是什么?

我遇到了一个很好的Java小型Web请求框架:Spark.API看起来不错,很有希望,但是库包本身很奇怪.不要理会它建议使用快照工件作为依赖项.单独留下它使用log4j进行日志记录(库现在倾向于使用jcl或slf4j)和System.out.println的事实.但它将自己的log4j.properties捆绑在spark-xxx.jar中.我花了一个小时来调查为什么当我的类路径中存在log4j.properties时,我的项目会抱怨log4j配置.-Dlog4j.debug = true给出了答案,log4j承认它已经从spark jar加载了log4j.properties.

我想知道这个(作为一个库并使用log4j和捆绑log4j.properties)是否有一些动机,或者它是否只是蹩脚.

java logging log4j spark-java

6
推荐指数
1
解决办法
565
查看次数

使用Spark Web框架时如何使用本机Servlet过滤器?

我正在玩Spark(Java Web框架,而不是Apache Spark).

我觉得定义路由和过滤器真的很好很容易,但是我希望在我的路由中应用本机servlet过滤器,似乎无法找到一种方法.

更具体地说,我想使用Jetty的DoSFilter,它是一个servlet过滤器(与Spark Filter定义形成对比).由于Spark使用嵌入式Jetty,我没有web.xml来注册DoSFilter.但是,Spark不会公开服务器实例,所以我找不到以编程方式注册过滤器的优雅方式.

有没有办法将本机servlet过滤器应用于我的路由?

我想把DoSFilter包装在我自己的Spark Filter中,但这似乎是一个奇怪的想法.

servlets embedded-jetty servlet-filters spark-java

6
推荐指数
1
解决办法
1173
查看次数

请求的路由尚未映射到Spark中

我想做点什么来用spark + java + hibernate + postgres注册用户

这是我的代码:

post("/registrar", (request, response) -> {
        EntityManagerFactory emf = Persistence.
         createEntityManagerFactory("compradorcitoPU");
         EntityManager em = emf.createEntityManager();em.getTransaction().begin();
         em.persist(u);
         em.getTransaction().commit();
         em.close(); return null; });
Run Code Online (Sandbox Code Playgroud)

但是这个错误出现了:

INFO spark.webserver.MatcherFilter - 请求的路径[/ registrarnull]尚未在Spark中映射

java postgresql persistence hibernate spark-java

6
推荐指数
2
解决办法
2万
查看次数

如何为自定义Java对象创建编码器?

我正在使用以下类从Spark编码器创建bean

Class OuterClass implements Serializable {
    int id;
    ArrayList<InnerClass> listofInner;

    public int getId() {
        return id;
    }

    public void setId (int num) {
        this.id = num;
    }

    public ArrayList<InnerClass> getListofInner() {
        return listofInner;
    }

    public void setListofInner(ArrayList<InnerClass> list) {
        this.listofInner = list;
    }
}

public static class InnerClass implements Serializable {
    String streetno;

    public void setStreetno(String streetno) {
        this.streetno= streetno;
    }

    public String getStreetno() {
        return streetno;
    }
}

Encoder<OuterClass> outerClassEncoder = Encoders.bean(OuterClass.class);
Dataset<OuterClass> ds = spark.createDataset(Collections.singeltonList(outerclassList), outerClassEncoder)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

Exception …
Run Code Online (Sandbox Code Playgroud)

java spark-java apache-spark apache-spark-2.0

6
推荐指数
1
解决办法
9875
查看次数

我将如何不断渲染FTL页面,让我们说更新?

假设我有以下Java代码.

get("/", (request, response) -> {
    Map<String, Object> attributes = new HashMap<>();

    //attributes.put("message", "Hello World!");

    return new ModelAndView(attributes, "index.ftl");
}, new FreeMarkerEngine());
Run Code Online (Sandbox Code Playgroud)

那是来自Spark.当我导航到localhost:portnumber /时,我看到index.ftl呈现,我们假设(此处未编码)显示此应用程序的数据库中的数据.但是,我想说我想动态更新index.ftl.假设另一个用户从另一个应用程序实例更新了数据库(此处未编码),我想在第一个用户的页面上显示index.ftl中的新更改.如何在不重新渲染页面的情况下完成这项工作?

你不能只是在Java端有一个定时器,每10-20毫秒就会接收一次新数据.这也将大大浪费连接时间.是否可以以某种方式更新Java代码以更新数据库?像数据库的监听器?

这不仅是一个问题,而且您如何能够将新接收的数据推送到index.ftl而无需重新渲染?

java freemarker spark-java

6
推荐指数
1
解决办法
376
查看次数