2016-03-29 71 views
0

我想在远程Linux服务器上设置一个播放框架。在POST请求服务器错误'播放框架2.4.3'

  1. 服务器:Linux操作系统Ubuntu 14.04
  2. Framwork:播放2.4.3
  3. 数据库:的Postgres 9.3.11
  4. 应用:Android手机
  5. 本地PC: Windows 8.1

我在本地PC上开发了后端,一切都像魅力一样,当我在路由器中打开端口9000时,我可以通过移动应用程序访问后端。

“这接缝大,什么这个帅哥那么问题?'”

嗯,我真的想用我的本地PC主办这个后端,所以我租了一个服务器上运行Linux操作系统。

我然后就到后台上传到服务器,创建相同的登录凭据,以数据库为本地,下载的Java 1.8,并的Postgres 9.3

我解雇了在服务器后端,和一切似乎都好。我可以输入http://serverip:9000,我可以看到与本地相同的主页。 到目前为止,如此好的

然后我试图通过一个POST请求表单添加一个人到数据库,这也在本地PC上工作。

当我在服务器上提交相同的表单时,我重定向到主页面,就像本地一样,但是当我查看serverlog时,它说它向数据库添加了“null”。

好吧,我想,奇怪的是,我开始在数据库中手动添加一些人。我正在使用coffeescript在主页面(索引)中显示数据库中的所有人员列表。

在添加一些手动数据并从数据库中删除空对象后,该脚本正确地在主页面上列出了数据库中的人员。

这使我相信该程序实际上与数据库建立连接,并可以从中获取内容,为什么它不能插入?我也注意到GET请求可以工作,但POST请求不能。

我调查了一些,我做了一个getPerson()函数,这是一个post请求,是的 - 从数据库中获取一个人。我制作一个表单,并尝试查看服务器是否可以从数据库中获得一个人。在浏览器窗口中,我现在收到错误消息。

Ok wtf ??然后我继续查看serverlog,而不是我的surprice,有关于HttpErrorHandlerExceptions的大量错误消息?

似乎所有的GET请求都在服务器上工作,但所有POST请求都没有。

有没有人知道该怎么做?我在这里亏本,我找不到任何类似的问题。请记住,这在我的个人电脑本地运行非常好,当我播放我自己的Windows PC时。看起来好像这里还有一个linux问题呢?

浏览器的错误信息

Execution exception 
[NullPointerException: null] 
In /home/kristian/Backend/target/scala-2.10/routes/main/router/Routes.scala:347 
344 // @LINE:9 
345 case controllers_Application_getPerson3_route(params) => 
346  call { 
347 controllers_Application_getPerson3_invoker.call(Application_1.getPerson()) 
348  } 
349 
350 // @LINE:10 
351 case controllers_Application_getPersons4_route(params) => 
352  call { 

服务器后端登录

[error] - play.core.server.netty.PlayDefaultUpstreamHandler - Cannot invoke the action 
java.lang.NullPointerException: null 
    at controllers.Application.getPerson(Application.java:52) ~[classes/:na] 
    at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$4$$anonfun$apply$4.apply(Routes.scala:347) ~[classes/:na] 
    at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$4$$anonfun$apply$4.apply(Routes.scala:347) ~[classes/:na] 
    at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:136) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.core.routing.HandlerInvokerFactory$JavaActionInvokerFactory$$anon$14$$anon$3$$anon$1.invocation(HandlerInvoker.scala:127) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:70) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.http.DefaultHttpRequestHandler$1.call(DefaultHttpRequestHandler.java:20) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.db.jpa.TransactionalAction.lambda$call$5(TransactionalAction.java:19) ~[play-java-jpa_2.10-2.4.3.jar:2.4.3] 
    at play.db.jpa.DefaultJPAApi.withTransaction(DefaultJPAApi.java:136) ~[play-java-jpa_2.10-2.4.3.jar:2.4.3] 
    at play.db.jpa.JPA.withTransaction(JPA.java:159) ~[play-java-jpa_2.10-2.4.3.jar:2.4.3] 
    at play.db.jpa.TransactionalAction.call(TransactionalAction.java:16) ~[play-java-jpa_2.10-2.4.3.jar:2.4.3] 
    at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) ~[play_2.10-2.4.3.jar:2.4.3] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[scala-library-2.10.5.jar:na] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library-2.10.5.jar:na] 
    at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32) ~[play_2.10-2.4.3.jar:2.4.3] 
    at scala.concurrent.impl.Future$.apply(Future.scala:31) ~[scala-library-2.10.5.jar:na] 
    at scala.concurrent.Future$.apply(Future.scala:485) ~[scala-library-2.10.5.jar:na] 
    at play.core.j.JavaAction.apply(JavaAction.scala:94) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:104) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:103) ~[play_2.10-2.4.3.jar:2.4.3] 
    at scala.Option.map(Option.scala:145) ~[scala-library-2.10.5.jar:na] 
    at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:103) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:96) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:537) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:537) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[scala-library-2.10.5.jar:na] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library-2.10.5.jar:na] 
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40) [akka-actor_2.10-2.3.13.jar:na] 
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) [akka-actor_2.10-2.3.13.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.10.5.jar:na] 
[error] - application - 

! @6phn3n8in - Internal server error, for (POST) [/foundperson] -> 

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[NullPointerException: null]] 
    at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:265) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:191) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.GlobalSettings$class.onError(GlobalSettings.scala:179) [play_2.10-2.4.3.jar:2.4.3] 
    at play.api.DefaultGlobal$.onError(GlobalSettings.scala:212) [play_2.10-2.4.3.jar:2.4.3] 
    at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:94) [play_2.10-2.4.3.jar:2.4.3] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3.applyOrElse(PlayDefaultUpstreamHandler.scala:273) [play-netty-server_2.10-2.4.3.jar:2.4.3] 
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$3.applyOrElse(PlayDefaultUpstreamHandler.scala:269) [play-netty-server_2.10-2.4.3.jar:2.4.3] 
    at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:344) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.Future$$anonfun$recoverWith$1.apply(Future.scala:343) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) [scala-library-2.10.5.jar:na] 
    at play.api.libs.iteratee.Execution$trampoline$.executeScheduled(Execution.scala:109) [play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:71) [play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.Promise$class.complete(Promise.scala:55) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:23) [scala-library-2.10.5.jar:na] 
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40) [akka-actor_2.10-2.3.13.jar:na] 
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) [akka-actor_2.10-2.3.13.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.10.5.jar:na] 
Caused by: java.lang.NullPointerException: null 
    at controllers.Application.getPerson(Application.java:52) ~[classes/:na] 
    at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$4$$anonfun$apply$4.apply(Routes.scala:347) ~[classes/:na] 
    at router.Routes$$anonfun$routes$1$$anonfun$applyOrElse$4$$anonfun$apply$4.apply(Routes.scala:347) ~[classes/:na] 
    at play.core.routing.HandlerInvokerFactory$$anon$4.resultCall(HandlerInvoker.scala:136) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.core.routing.HandlerInvokerFactory$JavaActionInvokerFactory$$anon$14$$anon$3$$anon$1.invocation(HandlerInvoker.scala:127) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:70) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.http.DefaultHttpRequestHandler$1.call(DefaultHttpRequestHandler.java:20) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.db.jpa.TransactionalAction.lambda$call$5(TransactionalAction.java:19) ~[play-java-jpa_2.10-2.4.3.jar:2.4.3] 
    at play.db.jpa.DefaultJPAApi.withTransaction(DefaultJPAApi.java:136) ~[play-java-jpa_2.10-2.4.3.jar:2.4.3] 
    at play.db.jpa.JPA.withTransaction(JPA.java:159) ~[play-java-jpa_2.10-2.4.3.jar:2.4.3] 
    at play.db.jpa.TransactionalAction.call(TransactionalAction.java:16) ~[play-java-jpa_2.10-2.4.3.jar:2.4.3] 
    at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) ~[play_2.10-2.4.3.jar:2.4.3] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [scala-library-2.10.5.jar:na] 
    at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70) [play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32) ~[play_2.10-2.4.3.jar:2.4.3] 
    at scala.concurrent.impl.Future$.apply(Future.scala:31) ~[scala-library-2.10.5.jar:na] 
    at scala.concurrent.Future$.apply(Future.scala:485) ~[scala-library-2.10.5.jar:na] 
    at play.core.j.JavaAction.apply(JavaAction.scala:94) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:104) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:103) ~[play_2.10-2.4.3.jar:2.4.3] 
    at scala.Option.map(Option.scala:145) ~[scala-library-2.10.5.jar:na] 
    at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:103) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:96) ~[play_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:537) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$14.apply(Iteratee.scala:537) ~[play-iteratees_2.10-2.4.3.jar:2.4.3] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [scala-library-2.10.5.jar:na] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [scala-library-2.10.5.jar:na] 
    ... 6 common frames omitted 

指数文件

<article>Insert to database/register:</article> 
<form method="POST" action="@routes.Application.addPerson()"> 
    <table> 
     <tr> 
      <td> 
       <article>Firstname</article> 
      </td> 
      <td> 
       <button>Add Person</button> 
      </td> 
     </tr> 
    </table> 
</form> 
<form method="POST" action="@routes.Application.getPerson()"> 

<article>Get person:</article> 
<table> 
    <tr> 
     <td> 
      <article>Firstname</article> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <input type="text" name="firstname"/> 
     </td> 
     <td> 
      <button>Get person</button> 
     </td> 
    </tr> 
</table> 

路由文件

# Routes 
# This file defines all application routes (Higher priority routes first) 
# ~~~~ 

# Home page 
GET /       controllers.Application.index() 
POST /person      controllers.Application.addPerson() 
GET  /persons     controllers.Application.getPersons 

# Map static resources from the /public folder to the /assets URL path 
GET  /assets/*file    controllers.Assets.at(path="/public", file) 

的addPerson的()在应用文件

@Transactional 
public Result addPerson() { 
    Person person = Form.form(Person.class).bindFromRequest().get(); 
    JPA.em().persist(person); 
    return redirect(routes.Application.index()); 
} 

@Transactional(readOnly = true) 
public Result getPersons() { 
    List<Person> persons = (List<Person>) JPA.em().createQuery("select p from Person p").getResultList(); 
    for(Person p : persons){ 
     System.out.println("Success: " + p.firstname); 
    } 
    return ok(toJson(persons)); 
} 

@Transactional(readOnly = true) 
public Result getPerson() { 
    Person findPerson = Form.form(Person.class).bindFromRequest().get(); 
    List<Person> persons = (List<Person>) JPA.em().createQuery("select p from Person p").getResultList(); 

    for(Person p : persons){ 
     if(p.firstname.equals(findPerson.firstname)) { 
      System.out.println("Success: " + p.firstname); 
     } 
    } 
    return ok(toJson(findPerson)); 
} 

的CoffeeScript

$ -> 
$.get "/persons", (persons) -> 
    $.each persons, (index, person) -> 
    $("#persons").append $("<li>").text person.firstname 

回答

相关问题