小编Far*_*mor的帖子

在泛型中将@SuppressWarnings("unchecked")添加到单行生成eclipse编译器错误

我偶然发现了一个我不理解的奇怪行为.

我必须将一个String转换为泛型,它会产生一个警告.

Type safety : Unchecked cast from String to T
Run Code Online (Sandbox Code Playgroud)
  • 如果我在@SuppressWarnings("unchecked")上面添加方法声明它可以正常工作.

  • 如果我将它添加到赋值之上,它会在eclipse中产生编译器错误.

这很好用.

@SuppressWarnings("unchecked")
public <T> T search(final String query){
 T returnValue = null;
 ...
 if(returnValue instanceof String){
  returnValue = (T) collection.getString(attrName);
 }
Run Code Online (Sandbox Code Playgroud)

这不行.

public <T> T search(final String query){
 T returnValue = null;
 ...
 if(returnValue instanceof String){
  @SuppressWarnings("unchecked") // Compiler error: "returnValue cannot be resolved to a type"
  returnValue = (T) collection.getString(attrName);
 }
Run Code Online (Sandbox Code Playgroud)

有什么想法导致两种抑制警告方法之间的差异?

java eclipse generics compiler-errors suppress-warnings

32
推荐指数
1
解决办法
1万
查看次数

玩不断写入光盘?在亚马逊ec2上导致更高的账单

我有自己的亚马逊ec2微实例(一个VPN服务器)来玩.
问题是,亚马逊会对您在微实例中执行的每个光盘IO收取费用.
该实例运行的是Amazon Linux的CentOS.

我在服务器上的Play 2.0(.2)框架中启动了一个Scala应用程序,我是唯一一个连接到该应用程序的人.

我观察到服务器上每隔几秒就有一些东西提交IO事务,为了缩小它,我安装了一个名为的Linux程序iotop.

这是几秒钟后的输出.

TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    
23333 be/4 root        0.00 B/s   11.91 K/s  0.00 %  0.00 %  
COMMAND java -Dsbt.ivy.home=/usr/play-2.0.2/framework/../repository -Djava.runtime.name=OpenJDK ~/jars/slf4j-api.jar:/usr/play-2.0.2/repository/local/org.slf4j/jul-to-slf4j/1.6.4/jars/j
Run Code Online (Sandbox Code Playgroud)

来自日志文件的猫

cat /home/ec2-user/socketTest/logs/application.log
2012-07-05 11:43:31,881 - [INFO] - from play in main
Listening for HTTP on port 9000...
Run Code Online (Sandbox Code Playgroud)

因此Play不会向日志文件写入任何内容.

第一个问题,我理解iotop正确,而Play确实是光盘IO小偷.
如果是这样,为什么要玩IO?

我的应用程序是一个简单的websocket示例.本质上,它回输输出.即使您没有通过websockets推送任何内容,也会发生IO.

java linux scala amazon-ec2 playframework-2.0

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

Slick的记录选项

我正在创建一个Play 2.1应用程序,我决定使用Slick进行数据库交互.
但是,我找不到有关如何为Slick配置/启用日志记录的文档.
谁知道这个?

logging scala playframework playframework-2.0 slick

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

如何在Play中替换JSON值

如何在Play中替换JSON值中的值?
代码说明:

def newReport() = Action(parse.json) { request =>
    var json = request.body
    if((json \ "customerId").as[Int] == -1){
      // replace customerId after some logic to find the new value
    }
    json.validate[Report](Reports.readsWithoutUser).map {
      case _: Report =>
Run Code Online (Sandbox Code Playgroud)

json scala playframework-2.0 playframework-2.1

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

MockMVC如何在同一测试用例中测试异常和响应代码

我想声明引发异常并且服务器返回500内部服务器错误.

要突出显示意图,请提供代码段:

thrown.expect(NestedServletException.class);
this.mockMvc.perform(post("/account")
            .contentType(MediaType.APPLICATION_JSON)
            .content(requestString))
            .andExpect(status().isInternalServerError());
Run Code Online (Sandbox Code Playgroud)

当然,无论我写作isInternalServerError还是写作都没关系isOk.无论是否在throw.except语句下方抛出异常,测试都将通过.

你会怎么解决这个问题?

java testing junit spring spring-mvc

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

播放框架会话和cookie如何工作?

游戏如何验证cookie?

  • 我注意到,在我重新启动服务器后,我仍然登录,即使我没有在数据库中预先存在任何会话数据.
  • 我还注意到我可以将服务器上的日期设置为大于cookie的exipry日期,但我仍然登录了.
  • 我注销了(将cookie保存到文本文件中)并且浏览器丢失了cookie.然后我从文本文件中重新创建了cookie,然后我再次登录.

cookie看起来像这样:

PLAY_SESSION = e6443c88da7xxxxxxxxxxxxxxxxxxxxxxxxxxxxx-的userid%3A1

// My logout code
def logout() = Action {
  Ok("").withNewSession
}
Run Code Online (Sandbox Code Playgroud)

从文档中
删除整个会话
有一个特殊操作丢弃整个会话:

Ok("Bye").withNewSession
Run Code Online (Sandbox Code Playgroud)

java authentication cookies scala playframework-2.0

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

Scala Slick/ScalaQuery BigDecimal创建十进制(10,0)如何允许小数?

如何告诉Slick创建允许小数的十进制SQL类型?
似乎默认情况下Slick不允许使用下面的代码注意到小数.它decimal(10,0)在MySQL中创建一个具有数据类型的列.

我的Scala代码中有以下模型:

import scala.slick.driver.MySQLDriver.simple._

case class TimeType(id: Option[Int], name: String,
  employeeMultiplier: BigDecimal, employerMultiplier: BigDecimal)

object TimeTypes extends Table[TimeType]("timeType") {
  def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
  def name = column[String]("name")
  def employeeMultiplier = column[BigDecimal]("employeeMultiplier")
  def employerMultiplier = column[BigDecimal]("employerMultiplier")
  def * = id.? ~ name ~ employeeMultiplier ~ employerMultiplier <> (TimeType, TimeType.unapply _)
}
Run Code Online (Sandbox Code Playgroud)

在启动期间,我使用Slick创建此表,除非它已存在此代码

...
lazy val database = Database.forDataSource(DB.getDataSource())

database.withSession {
  if (MTable.getTables("timeType").list.isEmpty) {
    TimeTypes.ddl.create
    ...
Run Code Online (Sandbox Code Playgroud)

database scala scalaquery playframework-2.0 slick

11
推荐指数
1
解决办法
1749
查看次数

Heroku slug尺寸计算?

Heroku如何计算slu size尺寸?

我正在做一个简单的Google Web工具包网络应用程序.我使用Spring Roo帮助我处理锅炉代码,它创建了一个小应用程序"费用",与Google IO上显示的应用程序相同.

对于生成的POM.xml文件,我在Heroku的spring mvc教程中添加了<artifactId> jetty-runner </ artifactId>.

现在,当我git push heroku master在终端maven中运行时,开始在Heroku端获取依赖项,[INFO] BUILD SUCCESS然后我得到了然后Heroku拒绝了我的推送.

-----> Push rejected, your compiled slug is 138.0MB (max is 100MB).
   See: http://devcenter.heroku.com/articles/slug-size !     Heroku push rejected, slug too large
Run Code Online (Sandbox Code Playgroud)

我生成的war文件在本地创建时最终为31Mb.但目标目录最终会像编译的slug大小一样,所以我添加了一个slugignore文件.

$ cat .slugignore
target/*
!target/*.war
Run Code Online (Sandbox Code Playgroud)

把它推到了Heroku,它仍然把它扔向我 Push rejected, your compiled slug is 138.0MB (max is 100MB).

所以我的问题是Heroku计算它的slu size大小?我已经阅读了他们的文档,但它非常稀疏.

java gwt build heroku maven

9
推荐指数
1
解决办法
2110
查看次数

限制并发Web服务请求(或某些批处理方法)

我是一个理解,从Web服务中获取逗号分隔的Id列表.
然后我使用Id List进行新的调用,我的问题是Id List大约是10000个长,每个调用都是一个中等大小的XML文档.
当我同时请求所有10 000个异步时,Web服务端点,或者它可能是Play Framework,并不是很喜欢它,因为我只得到大约500个正确的响应.

一些伪代码突出了意图.

for {
  respA <- WS.url(url1).get
  id <- respA.body.split(",")
  respB <- WS.url(url2 + id).get
} yield ...
Run Code Online (Sandbox Code Playgroud)

我如何将并发请求限制为更可行的?

asynchronous web-services scala playframework playframework-2.0

9
推荐指数
2
解决办法
2653
查看次数

更改sbt的输出目录

我想更改某些生成文件的输出目录,在本例中是从XSD-Schema生成的对象.

这是我的构建文件的一部分.

val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA,
      settings = Defaults.defaultSettings ++ buildInfoSettings ++ scalaxbSettings
    ).settings(
      sourceGenerators in Compile <+= buildInfo,
      buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
      buildInfoPackage := "hello",
      packageName in scalaxb in Compile := "models",
      sourceGenerators in Compile <+= scalaxb in Compile
    )
Run Code Online (Sandbox Code Playgroud)

此代码将生成的文件放入以下目录:

target/scala-2.10/src_managed/main/models/
Run Code Online (Sandbox Code Playgroud)

如何更改构建文件以将文件输出到下面呢?

/app/models/
Run Code Online (Sandbox Code Playgroud)

scala sbt playframework scalaxb playframework-2.1

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