2

在 Scala 中实现 SOAP Web 服务的最佳库/框架是什么?

使用 scalaxb 实现 SOAP Web 服务的示例?

请不要使用升降机等重型框架。

4

2 回答 2

0

我想目前没有这样的图书馆,也许永远不会,无论如何,情况并不像看起来那么糟糕。您可以在现有 Java SOAP 库之上创建一个 Scala 包装器。在这里查看更多信息Scala 中的 SOAP 代理 - 我需要什么?对于初学者来说:http: //java.dzone.com/articles/basic-ws-scala-sbt-and-jee-6

于 2013-01-15T11:14:43.213 回答
0

我遇到了这个非常老的问题,我不确定发布时情况是否有所不同,但这里有一个使用 jax-ws 的示例,来自https://redsigil.weebly.com/home/a-scala-肥皂网络服务

@WebService(
  targetNamespace = "http://com.redsigil/soapserver",
  name = "com.redsigil.soapserver",
  portName = "soap",
  serviceName = "SoapServerSample")
@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)
@Addressing(enabled = true, required = false)
class SoapServerImpl() {
  @WebMethod(action = "hashing")
  def test(@WebParam(name = "mystr", mode = WebParam.Mode.IN) value: String): String = sha256Hash(value)

  def sha256Hash(text: String): String =
    String.format("%064x",
      new java.math.BigInteger(1, java.security.MessageDigest.getInstance("SHA-256").digest(text.getBytes("UTF-8"))))
}

如您所见,它相当简单,尽管注释使它有点难看。该服务定义了一个 SOAP 方法(“test”),它接受一个字符串并返回其哈希值。主函数如下所示:

val myservice: SoapServerImpl = new SoapServerImpl()
val ep:Endpoint = Endpoint.publish("http://localhost:8080/test", myservice)

是的,我知道 OP 表示他不喜欢使用 jax-ws——在评论中有点咆哮,但考虑到这不是通过适当的设计和抽象无法解决的问题。

于 2017-10-20T18:50:47.080 回答