在尝试使用Spark Web框架提供静态文件时,我在哪里放置文件?
我无法在网上找到任何东西 - 我开始怀疑我对Eclipse和Java项目的类路径,相对路径等一无所知.
关于Spark中静态文件的这一段是指/public,但我不知道它会在哪里.使用Windows,Eclipse Luna和我的项目转换为使用Maven.
我已经尝试过在GitHub上查看代码了,但是我试图找到它有点不合时宜.
我正在尝试使用sparkjava.com框架为我的apache spark作业构建一个web api.我的代码是:
@Override
public void init() {
get("/hello",
(req, res) -> {
String sourcePath = "hdfs://spark:54310/input/*";
SparkConf conf = new SparkConf().setAppName("LineCount");
conf.setJars(new String[] { "/home/sam/resin-4.0.42/webapps/test.war" });
File configFile = new File("config.properties");
String sparkURI = "spark://hamrah:7077";
conf.setMaster(sparkURI);
conf.set("spark.driver.allowMultipleContexts", "true");
JavaSparkContext sc = new JavaSparkContext(conf);
@SuppressWarnings("resource")
JavaRDD<String> log = sc.textFile(sourcePath);
JavaRDD<String> lines = log.filter(x -> {
return true;
});
return lines.count();
});
}
Run Code Online (Sandbox Code Playgroud)
如果我删除lambda表达式或将其放在一个简单的jar而不是web服务(不知何故是一个servlet)中,它将运行而没有任何错误.但是在servlet中使用lambda表达式将导致此异常:
15/01/28 10:36:33 WARN TaskSetManager: Lost task 0.0 in stage 0.0 (TID 0, hamrah): java.lang.ClassCastException: cannot assign instance …Run Code Online (Sandbox Code Playgroud) 我是sparkjava的新手.我想用spark java读取我的请求参数,但我无法找到正确的语法.请帮帮我.下面是我的路由方法和客户端调用它:
我的客户端请求url: / smartapp/getDataViewModelConfig?collId = 123'
路线方法:
get("smartapp/getDataViewModelConfig/:id", "application/json", (request, response)
-> {
String id = request.params(":id");
}
Run Code Online (Sandbox Code Playgroud)
'id'字段在这里返回null.关于这里出了什么问题的任何建议?
我使用spark web框架来创建webapp,但我不知道如何部署这个webapp.我很抱歉,如果这是非常基本的,但我是新的引发框架,我找不到任何指导我如何部署spark webapp的文档:
我对所有这些事情都很陌生,但希望你们能帮我理解它是如何运作的.我有一个带字段的表格.我如何从客户端获取数据?正在寻找一些信息,但无法找到.
<form action="Dispatcher" method="post">
<fieldset>
<p>Name</p>
<input type="text" name="userName" required="true">
<p>Email</p>
<input type="text" name="userEmail" required="true">
<input type="submit" value="submit">
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud) 如何在spark-java框架中使用自定义SSLContext和自定义SSLServerSocketFactory?我在SparkServerImpl中搜索过但不知道如何注入sslfactory,有什么建议吗?
我HttpURLConnection用来向使用JAVA Spark创建的本地部署的本地服务发出POST请求.当我使用HttpURLConnection进行POST调用时,我想在请求体中发送一些数据,但每次JAVA Spark中的请求体都为null.以下是我正在使用的代码
post("/", (req, res) -> {
System.out.println("Request Body: " + req.body());
return "Hello!!!!";
});
`public class HTTPClassExample{
public static void main(String[] args) {
try{
URL url = new URL("http://localhost:4567/");
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
httpCon.setDoOutput(true);
httpCon.setRequestMethod("POST");
httpCon.connect();
OutputStream os = httpCon.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("Just Some Text");
System.out.println(httpCon.getResponseCode());
System.out.println(httpCon.getResponseMessage());
osw.flush();
osw.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}`
Run Code Online (Sandbox Code Playgroud) java web-services httpurlconnection spark-java microservices
我正在使用spark来开发Web应用程序; 我想上传文件时出现问题:
public final class SparkTesting
{
public static void main(final String... args)
{
Spark.staticFileLocation("/site");
Spark.port(8080);
Spark.post("/upload", (request, response) -> {
final Part uploadedFile = request.raw().getPart("uploadedFile");
final Path path = Paths.get("/tmp/meh");
try (final InputStream in = uploadedFile.getInputStream()) {
Files.copy(in, path);
}
response.redirect("/");
return "OK";
});
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
[qtp509057984-36] ERROR spark.webserver.MatcherFilter -
java.lang.IllegalStateException: No multipart config for servlet
at org.eclipse.jetty.server.Request.getPart(Request.java:2039)
at javax.servlet.http.HttpServletRequestWrapper.getPart(HttpServletRequestWrapper.java:361)
at com.github.fge.grappa.debugger.web.SparkTesting.lambda$main$0(SparkTesting.java:20)
at com.github.fge.grappa.debugger.web.SparkTesting$$Lambda$1/920011586.handle(Unknown Source)
at spark.SparkBase$1.handle(SparkBase.java:264)
at spark.webserver.MatcherFilter.doFilter(MatcherFilter.java:154)
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 …Run Code Online (Sandbox Code Playgroud) 我在Spark框架中注意到了一些东西.它与使用映射路由的尾部斜杠不匹配.所以它认为/ api/test和/ api/test /是不同的URI.
如果有一种方法可以将它们一起通配,那就好了,但似乎没有.我错过了什么吗?
我想要这条路线:
Spark.get("/api/test", (req, res) -> {
return "TEST OK";
});
Run Code Online (Sandbox Code Playgroud)
匹配/ api/test OR/api/test /.就目前而言,它只匹配/ api/test,如果我将其切换为:
Spark.get("/api/test/", (req, res) -> {
return "TEST OK";
});
Run Code Online (Sandbox Code Playgroud)
它只匹配 /api/test/