小编nop*_*lay的帖子

如何在Play Framework和Scala中使用IntelliJ

我试图使用IntelliJ与播放框架2.11应用程序.

我安装了Play Framework 2插件和IntelliJ的Scala插件.

我创建了一个Play应用程序.我一直在努力在IntelliJ中编写和运行Specs 2测试.我的运行配置说在运行Specs 2测试时首先运行"make",但是看起来我的测试类看起来不像.继续告诉我它找不到规范.当我查看文件系统时,目标/测试类中没有代码,目录为空.此外,至少与运行Play控制台相比,似乎需要花费很长时间才能进行构建.

我想看看人们如何使用Play with IntelliJ.您是否只使用IntelliJ作为编辑器,并通过Play控制台运行所有内容?

有没有办法可以在IntelliJ中运行应用程序测试(让测试类运行)?

我在运行Play控制台并运行~test-only test = xxx.Spec时从未遇到任何问题.它通常很快.

当我尝试运行我的Specs2测试时,这是我在IntelliJ中获得的异常:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.runSingleTest(JavaSpecs2Runner.java:130)
    at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.main(JavaSpecs2Runner.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.lang.RuntimeException: can not create specification: test.ApplicationSpec
    at scala.sys.package$.error(package.scala:27)
    at org.specs2.specification.SpecificationStructure$.createSpecification(BaseSpecification.scala:96)
    at org.specs2.runner.ClassRunner.createSpecification(ClassRunner.scala:64)
    at org.specs2.runner.ClassRunner.start(ClassRunner.scala:35)
    at org.specs2.runner.ClassRunner.main(ClassRunner.scala:28)
    at org.specs2.runner.NotifierRunner.main(NotifierRunner.scala:24)
    ... 11 more
Run Code Online (Sandbox Code Playgroud)

scala intellij-idea playframework

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

在Scala中选择DISTINCT

我正在使用Slick 1,我必须能够在查询中应用过滤器来查找与相关表中的条件匹配的所有实体.

这个使用Slick文档的例子显示了我想要做的事情(这是一个与我的情况很接近的人为例子).

在这里,我想要西海岸供应商提供的所有咖啡.我只想要咖啡,我只对导航到供应商以应用过滤器感兴趣:

val westCoast = Seq("CA", "OR", "WA")
val implicitInnerJoin = for {
  c <- Coffees
  s <- Suppliers if c.supID === s.id && s.state inSet westCoast
} yield c
Run Code Online (Sandbox Code Playgroud)

这项工作正常,但如果在Suppliers表中有多个匹配项,它将复制咖啡.

明显的解决方法是在普通的SQL中做一个SELECT DISTINCT; 但是,我在这里找不到办法.

你理论上可以做一个:

query.list.distinct
Run Code Online (Sandbox Code Playgroud)

结果已经返回后; 但是,我也实现了PAGING支持,因此一旦已经从数据库返回,您就不希望处理结果.这是分页支持:

query.drop(offset).take(limit).list
Run Code Online (Sandbox Code Playgroud)

所以,简而言之,我需要一种在我的查询中指定SELECT DISTINCT的方法.

有人有主意吗?

scala slick

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

MBean简单图形监视器

我有一些JMX Beans在我的应用程序中公开性能信息.我想有一些工具可以在图形中绘制MBean的属性以进行监控(Windows Perf Mon).我喜欢JConsole和VisualVM附带的东西,但我找不到一个好的插件,它可以让我在MBean上选择一个属性并对其进行监控.有人有主意吗?

jmx visualvm jconsole

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

使用wsadmin远程部署到Websphere 6.1.x.

我正在尝试将war文件远程部署到websphere应用程序服务器.我知道这可以使用wsadmin,但我是一个Websphere newb.

我知道我可以运行wsadmin并使用SOAP连接到远程应用服务器,但这就是我所处的位置.

这似乎应该是一个常见的用例,任何人都可以帮助我吗?

我想用例如下:1.更新应用程序2.保存所有更改3.重新启动远程应用程序服务器

我将使用Hudson WAS Builder或Maven进行部署,无论哪种方法都有效.

谢谢你的帮助

deployment websphere wsadmin

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

UnknownHostException kafka

我正在尝试设置Kafka集群(实际上是集群中的第一个节点).

我有一个单节点zookeeper群集设置.我在一个单独的节点上设置kafka.

两者都运行CentOS 6.4,运行IPV6,这是一个PITA.我验证了这些机器可以使用netcat相互通信.

当我启动kafka时,我收到以下异常(导致kafka关闭).编辑:我开始kafka,我不得不host.name在server.config文件中设置属性.

我能够创建一个测试主题并从kafka服务器发送消息.

但是,尝试使用消息时出现相同的错误.

任何帮助,建议?

host.name

apache-kafka apache-zookeeper

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

DDD在可配置规则驱动的系统中

请原谅任何无知,我对DDD相当新,所以要温柔.

我正在研究一个大型配置驱动的数据管理系统.通过在外部语法中指定配置(如业务规则,进程和验证)来构建系统.我们只是说语法是基于Groovy的DSL和Drools的集合体.

我喜欢DDD提供的简单性概念,特别是将基础架构问题与域的核心概念分离开来.

但是,由于系统的可配置性,我正在努力应用DDD的一些概念.行为(流程),验证和业务规则都是在系统外部定义的.因此,域中的实体本质上没有自己的行为.相反,它们对"验证器"或"规则引擎"或"工作流引擎"很敏感.

我将以一个例子来澄清.假设我的系统管理公司的员工.没有太多想法,您会想象我的域中有员工实体和公司实体.

在DDD之后,我试图模拟一个员工晋升的场景.您可能会在Employee上看到一个名为promote(Employee.promote)的新方法.我们可以有一个业务规则,表明员工在同一年内不能被提升两次(是的,这一切都已完成).因此我可以这样:

public void promote( EmployeeLevel newLevel ) {
  if ( hasBeenPromotedThisYear( this ) {
    throw new InvalidPromotionException
Run Code Online (Sandbox Code Playgroud)

好吧,在我正在使用此业务规则的应用程序中,将外部化为规则引擎.在DDD之后,我可以做类似的事情:

if( promotionRules.isEligibleForPromotion(this)
Run Code Online (Sandbox Code Playgroud)

外化我的规则.但是,该系统比这更通用."促销"操作本身通过外部配置定义为"过程".因此,在编译时,我甚至不知道我是否为该员工提供了"推广"操作.因此,从代码角度来看,我的员工对象变得非常简单,将所有功能委派给配置.它可能看起来像:

public class Employee {
  public void execute( Process process )
Run Code Online (Sandbox Code Playgroud)

或者

public class EmployeeProcess {
  public void process( Employee employee )
Run Code Online (Sandbox Code Playgroud)

我的问题是:DDD在这个应用程序中是否有意义?我是否应该在非DDD意义上模拟流程,验证,业务规则(规则引擎)的协作?

我喜欢洋葱架构,可以使用UI - >应用程序服务 - >核心 - >基础架构来保持关注点的良好分离.但核心可能是上面提到的合作者,而不是真正的"领域概念".

我的一部分认为,在这种情况下,"域概念"是验证器,处理器,业务规则,因为它们构成了我们在讨论系统时所讨论的无处不在的语言.在这种情况下,我会让实体没有真正的行为(大部分),以及处理器,验证器,规则引擎方面的域概念,它们实现了系统中的行为.

添加更多信息.鉴于我上面的问题,我正在努力寻找一个看起来像这样的解决方案:

org.example.app

org.example.domain - Employee - Company - EmployeeLevel

org.example.domain.shared - 进程 - BusinessRule - Validator

org.example.infrastructure

希望这个小片段增加一点清晰度.

因此,Process,BusinessRule和Validator概念将位于域内,但会根据系统所做的事情支持域模型.

domain-driven-design rules

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

为什么通过Avro编组/解组JSON这么慢?

我是Avro的新手,使用1.7.7.

我有一个编译的模式.

我试图通过JSON进行编组,认为我会利用Avro提供的验证.

然而,Avro编组很慢(至少我正在这样做).

以下是通过我的对象的10,000次迭代.该对象具有嵌套对象和嵌套的对象数组,因此它很复杂.虽然它很复杂,但没有很多数据元素.在阵列中,我有3个项目,所以那里不是很多.

以下是我的表现测试结果:

CONVERTING TO JSON (THROUGH AVRO) AVG: 74 MICROS
CONVERTING FROM JSON (THROUGH AVRO) AVG: 433 MICROS
CONVERTING TO JSON (JACKSON STREAMING) AVG: 16 MICROS
CONVERTING FROM JSON (JACKSON STREAMING) AVG: 9 MICROS
Run Code Online (Sandbox Code Playgroud)

最后两个(JACKSON STREAMING)我使用的是纯Jackson流式API而不是AVRO.性能提升是荒谬的.

我觉得我在这里做错了什么.以下是处理JSON < - > AVRO内容的代码片段:

 val spanDatumReader = new SpecificDatumReader[Span](Span.getClassSchema)
 val spanDatumWriter = new SpecificDatumWriter[Span](Span.getClassSchema)

 def fromJson(spanJson:String):Span = {

  val spanJsonDecoder = DecoderFactory.get.jsonDecoder(Span.getClassSchema, spanJson)
  spanDatumReader.read(null, spanJsonDecoder)
 }

 def toJson(span:Span):String = {

    val writer = new StringWriter()
    val jsonGenerator = jsonFactory.createJsonGenerator(writer) …
Run Code Online (Sandbox Code Playgroud)

json scala avro

8
推荐指数
0
解决办法
813
查看次数

m2eclipse和Eclipse WTP

我有一个非常大的工作空间,大约有30个项目.我正在使用带有m2eclipse的Eclipse 3.5.我使用默认值检查我的subversion存储库,以便将项目导入我的工作区.

我创建了一个Tomcat服务器实例,并将我的web项目发布到tomcat服务器.听起来很容易.

问题是它看起来好像我的其他项目的传递依赖关系被自动添加到容器中,所以当容器启动时我得到classnotfound异常,等等.

我进入了Web项目的属性,我注意到没有检查Java EE模块依赖项的某些传递依赖项.我检查它们,一切看似有效,直到我做一个项目干净的构建,当eclipse自动重置Java EE模块依赖项时,所以我需要重新检查它们.这很令人发狂,我希望在使用Eclipse WTP时有一些方法可以自动提取所有传递依赖项.

我应该提一下,使用标准的maven构建工作就好了,所有内容都被适当地拉入到生成的WAR文件中.由于某些原因,WTP的效果不好.

eclipse maven-2 m2eclipse eclipse-wtp

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

为什么IDEA无法解析scala.reflect,但scala-reflect包含在项目设置中?

我正在使用最新的IntelliJ 14版本以及所有最新的插件.另外,我在Mac Yosemite上.

我想简单地导入scala反射,所以我可以使用 TypeTag

当我尝试这样做时......

import scala.reflect.runtime.universe._
Run Code Online (Sandbox Code Playgroud)

IntelliJ抱怨它不知道那是什么.当我尝试通过代码辅助时,它也无法看到runtime内部的包scala.reflect

我在项目设置中看到了scala-reflect库.我还尝试手工添加scala-reflect作为libraryDependency项目的一部分.似乎没有什么工作.

其他人遇到过这个问题?

scala intellij-idea

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

CQRS或App服务?

所以我在我们的应用程序中喜欢CQRS的概念,主要是因为我们已经支持事件采购(从概念上讲,不遵循您在那里看到的任何处方).然而,看起来CQRS似乎是面向大数据,最终的一致性,那种事情.我们总是成为一个关系数据库应用程序,所以我不确定它是否合适.

我也有顾虑,因为我认为我需要在我的应用层中做一些特殊的事情.在进行读取时,我需要强制执行安全性和过滤数据,这些是传统上在应用程序层中实现的内容.

我的第一个问题是,我的应用程序是否合适(传统的MVC /关系数据库应用程序)?或者使用传统的应用层并使用DTO Mapper更有意义吗?

我的第二个问题是,从传统的应用程序层向域模型发出命令是否有意义?我喜欢命令/命令处理程序和事件的想法.

让我澄清一下我的问题.我担心与授权相关的数据过滤.当用户请求数据时,必须有一个过滤器,通过将它们全部一起删除(因此它们不会返回给调用者),隐藏值或对数据应用掩码来限制对某些数据元素的访问.在一个人为的例子中,对于社会安全号码,提出请求的用户可能只能看到最后4个号码,因此结果看起来像### - ## - 1234.

我的断言是这个责任在Application层中.我认为这是一个方面,其中对查询或命令的所有响应都必须通过此过滤器机制.这是我的CQRS naivity所经历的地方,也许是命令永远不会返回数据,只是指向通过读取模型查找的数据的指针?

谢谢!

domain-driven-design cqrs

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

在 Scrum 中集成的用户故事

我正在从事一个具有非常复杂的集成需求的项目,特别是接收和发送 EDI 数据以及发生在两者之间的所有“有趣”的事情。我绝对可以将精力集中在数据处理(验证、必填字段、转换)上,但我遇到的问题是如何在待办事项中构建故事和史诗以计划和跟踪工作。

很容易说“作为经理,我可以拒绝休假请求,这样我就可以确保我有足够的员工来履行我的承诺。” 实际上,我在这方面非常擅长,但我对这种集成工作还很陌生。

对于大型集成项目,更难指出用户是谁,以及价值是什么。EDI 集成只是接口(非功能性)需求,但实施起来却是一项巨大的工作。

任何人都可以就如何在我创建的产品待办列表中构建/构建这些类型的需求提供一些指导吗?

agile integration scrum user-stories

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

在Play 2中使用JSON时出错

我正在尝试使用JSON和Play Framework 2.1.0和Scala 2.10序列化/反序列化.我正在使用Anorm,我有一个非常简单的对象,我想存储在数据库中.订单很简单:

case class Order(id: Pk[Long] = NotAssigned, mfg: String, tp: String)
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我正在尝试构建一个REST接口,以便能够接受并发送一个Order实例(上面)作为JSON.在那里,我有以下代码:

  implicit object PkFormat extends Format[Pk[Long]] {
     def reads(json: JsValue):Pk[Long] = Id(json.as[Long])
     def writes(id: Pk[Long]):JsNumber = JsNumber(id.get)
  }
Run Code Online (Sandbox Code Playgroud)

但是,当我使用以下命令运行"play test"时,这无法编译:

重写方法读取特征读取类型(json:play.api.libs.json.JsValue)play.api.libs.json.JsResult [anorm.Pk [Long]]; [error]方法读取有不兼容的类型[错误] def读取(json:JsValue):Pk [Long] = Id(json.as [Long])

有谁知道为什么会这样?

我在JAXB方面有很多经验,但我对Play和Scala都是新手,到目前为止我还没有找到任何答案.这看起来像一个非常简单的用例,实际上我希望有一个更简单的解决方案(如Annotations),但我找不到(至少还没有)

任何帮助是极大的赞赏!

谢谢

json scala playframework playframework-2.0 playframework-json

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

Play框架中的集成测试

我试图让集成测试在Play Framework 2.1.1中运行

我的目标是能够在单元测试后运行集成测试,以测试底层数据库的组件级功能.底层数据库将具有存储过程,因此我必须做的不仅仅是您可以在伪应用程序中配置的"inMemoryDatabase".

我希望这个过程是:

  1. 使用FakeApplication启动TestServer.使用备用集成测试配置文件
  2. 运行集成测试(可以按包过滤,也可以不在此处过滤)
  3. 停止TestServer

我相信最好的方法是在Build.scala文件中.

我需要有关如何设置Build.scala文件的帮助,以及如何加载替代集成测试配置文件(project/it.conf)

非常感谢任何帮助!

testing integration scala sbt playframework

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