Scala中的SOAP代理 - 我需要什么?

tst*_*ner 8 java xml soap scala http

我正在尝试在Scala中编写一个程序,它将接受SOAP请求,从真实服务器获取响应(或从本地磁盘读取它)并将数据返回到原始客户端.

我是java/scala生态系统的新手,所以我不知道要选择哪些库.我听说Scala的XML处理非常好,所以我不知道,我是否应该使用一些企业级的肥皂库/框架,如jax-ws,jboss-ws,axis,cxf,xmlbeans等.

基本上,我只是需要

  • 一个库,接受请求(目前,我正在看码头,但我更喜欢原生支持演员的东西.scala-http似乎涵盖了这个,但不是生产就绪或维护,就此而言)
  • 一些库来请求来自其他服务器的数据(类似curl,libwww-perl for java/scala)
  • 构建系统(ant?sbt?)
  • 一个IDE(我习惯了eclipse,但IntelliJ的scala支持应该更好)
  • 一个测试它的工具(目前,我正在使用SoapUI)

Kev*_*ght 14

SOAP确实是一个可怕的规范,具有很多潜在的不寻常的边缘行为.虽然Scala中的XML支持确实可以帮助您从头开始编写这样的库,但它仍然是一项重大工作(取决于您需要多少规范).

同样,Jetty背后有多年的发展; 处理性能需求和您可能未考虑的其他意外行为......即使是Scala最着名的Web框架Lift,由于这些原因在Java Web服务器上运行.它仍然与演员非常愉快地合作.

所以,在这个时刻,你几乎肯定会更好地使用经过试验和测试的Java Web服务器和现成的Java SOAP库解决方案.为这些东西添加一个瘦Scala包装器的努力远远少于从头开始构建这些东西的努力.

对于构建系统,sbt是目前Scala最强大的工具,但如果需要通过所选SOAP库生成代码,则可能需要回退到Maven.

最后,为编辑选择.如果您对使用Emacs感到高兴,那么Ensime插件真是太棒了.如果您更喜欢传统的Java IDE,那么IntelliJ目前似乎是最稳定的选择,但请注意,这可能会很快发生变化.