Giter Club home page Giter Club logo

play-soap's Introduction

Play Framework - The High Velocity Web Framework

Twitter Follow Discord GitHub Discussions StackOverflow YouTube Twitch Status OpenCollective

Build Status Maven Repository size Scala Steward badge Mergify Status

The Play Framework combines productivity and performance making it easy to build scalable web applications with Java and Scala. Play is developer friendly with a "just hit refresh" workflow and built-in testing support. With Play, applications scale predictably due to a stateless and non-blocking architecture. By being RESTful by default, including assets compilers, JSON & WebSocket support, Play is a perfect fit for modern web & mobile applications.

Learn More

Sponsors & Backers

If you find Play useful for work, please consider asking your company to support this Open Source project by becoming a sponsor.
You can also individually sponsor the project by becoming a backer.

Thank you to our premium sponsors!

Thank you to all our backers!

License

Copyright (C) from 2022 The Play Framework Contributors https://github.com/playframework, 2011-2021 Lightbend Inc. https://www.lightbend.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

play-soap's People

Contributors

asamsig avatar atyutin90 avatar ennru avatar gmethvin avatar ihostage avatar jamesmcintosh avatar jroper avatar justinpihony avatar kusmierz avatar marcospereira avatar mergify[bot] avatar mkurz avatar octonato avatar pvlugter avatar richdougherty avatar scala-steward avatar wsargent avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

play-soap's Issues

support for jakarta

I don't understand the XML ecosystem very well, but I gather that jakarta is the successor to a subset of javax, and other tools are moving on to support jakarta. For example, Guice's latest version 7.0.0 only supports jakarta injection. They also released 6.0.0 that works with both javax and jakarta. So, for now, I can only upgrade to Guice to 6.0.0 in my project because play-soap still uses javax injection. Is there intention to move to jakarta?

How to change the URL address of a WSDL port at runtime?

How to change the URL address of a WSDL port at runtime?


In the documentation it is documented how to change the address by setting a property configuration value:

<wsdl:service name="HelloWorldService">
    <wsdl:port binding="tns:HelloWorldSoapBinding" name="HelloWorld">
      <soap:address location="http://example.com/helloWorld"/>
    </wsdl:port>
</wsdl:service>

to change the address we need to add a configuration value:

play.soap.services.com.example.HelloWorldService.address = "http://example.com/helloWorld"

In our use case we cannot use a static value in the application.conf and need to change the address at runtime because we need to add a country suffix which we know at runtime:
"http://example.com/helloWorld/RO"
"http://example.com/helloWorld/SI"
...
I have tried unsuccesfully to add a JAX-WS handler to do so like:

   public boolean handleMessage(SOAPMessageContext context) {
        //Set timeout until a connection is established
        context.put("javax.xml.ws.client.connectionTimeout", "5000");
        context.put("javax.xml.ws.client.receiveTimeout", "5000");
        String countryAddress = configuration.getBydUrl() + countryCode;
        context.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, countryAddress);
        .....
        .....

What is the approach to follow for a solution in Java?

As a workaround I have for now an ugly working workaround where I have added in the WSDL one service
with a specific address per each remote tenant:

    <wsdl:service name="service_RO">
        <wsdl:port name="binding_SOAP12_RO" binding="tns:binding_SOAP12">
            <wsoap12:address
                    location="https://hc-apigw-d-internal.hilti.com/internal-generic/hc/MaintainLeadByDAdapter/v1/RO"/>
        </wsdl:port>
    </wsdl:service>
    <wsdl:service name="service_SI">
        <wsdl:port name="binding_SOAP12_SI" binding="tns:binding_SOAP12">
            <wsoap12:address
                    location="https://hc-apigw-d-internal.hilti.com/internal-generic/hc/MaintainLeadByDAdapter/v1/SI"/>
        </wsdl:port>
    </wsdl:service>

and then with an ugly factory I return the SOAP operation per country:

    private final ServiceVN serviceVN;
    private final ServiceUA serviceUA;
...
    Optional <MaintainLeadIn> getMaintainLeadIn(String countryCode){
        switch (countryCode){
            case "SI": return Optional.of(serviceSI.getBindingSOAP12SI());
            case "BA": return Optional.of(serviceBA.getBindingSOAP12BA());
.....

but it is not ideal because for each new tenant I need to rebuild the service which I would like
to avoid.

SBT can't import "play-soap-plugin"

Adding play-soap-plugin to a project via SBT as suggested in the docs:

libraryDependencies ++= Seq("com.typesafe.play" % "play-soap-plugin" % "2.0.0")

does not work.

[error]   Not found
[error]   Not found
[error]   not found: C:\Users\613888453\.ivy2\localcom.typesafe.play\play-soap-plugin\2.0.0\ivys\ivy.xml
[error]   not found: https://repo1.maven.org/maven2/com/typesafe/play/play-soap-plugin/2.0.0/play-soap-plugin-2.0.0.pom

https://repo1.maven.org/maven2/com/typesafe/play/play-soap-plugin indeed doesn't exist. Maybe I should source it from elsewhere? Anything I might be doing wrong here should probably be part of the documentation, I think.

NullPointerException when using CompletionStage fetched by generated proxy

New Play application created through sbt running with the following versions:

  • play-soap v. 1.1.3
  • Play v. 2.6.5
  • Scala v. 2.11.11

My Java-classes are generated from the following internal service:
WsdlKeys.wsdlUrls in Compile += url("http://172.x.x.x/SOAP/PortalService.svc?wsdl")

Below is a simple index method in my controller. I've deliberately avoided the return type CompletionStage<Result> on the method for simplicity's sake:

     public Result index() {
        ObjectFactory factory = new ObjectFactory();

        PortalUserDTO portalUserDTO = new PortalUserDTO();
	portalUserDTO.setUsername(factory.createPortalUserDTOUsername("test"));
        portalUserDTO.setFullName(factory.createPortalUserDTOFullName("Test User"));

        ICitizenEndpoint client = portalService.getPortalServiceCitizenEndpoint();
        
        CompletionStage<PortalCitizenDTO> citizen = client.fetchCitizen(10, portalUserDTO);

        // Thread.sleep(500);
        
        citizen.thenApply(x -> x);

        return ok("Everything is fine.");
    }

The NullPointerException appears to be sporadic (roughly 20% of the time), and can be avoided by sleeping the running thread. Below is a stack trace of when the exception is thrown:

Exception in thread "default-workqueue-1" java.lang.NullPointerException
	at org.apache.cxf.endpoint.ClientImpl$1.onMessage(ClientImpl.java:505)
	at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream$1.run(HTTPConduit.java:1185)
	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$3.run(AutomaticWorkQueueImpl.java:428)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.cxf.workqueue.AutomaticWorkQueueImpl$AWQThreadFactory$1.run(AutomaticWorkQueueImpl.java:353)
	at java.lang.Thread.run(Thread.java:748)

Wireshark shows that the endpoint does provide it with data.

I'm unsure if this behaviour was introduced when you moved from promises to CompletionStages, but I imagine that it is likely. This does prevent me from using the plugin.

Provide an option to pretty log the payload ?

Hiya, I'm trying to log both inbound and outbound message which pass through the client. I've set the debugLog option to true. However, the payload printed is a chuck of xml and I can't set cxf Interceptor (in PlaySoapClient.createPort) prettyLogging to true since only createPort method is exposed. What should I do ?

Not able to set "-exsh true" for wsdl2java args

Play version 2.6.5
Play soap version 1.1.3
Scala version 2.11.11

When I pass -exsh true to wsdlArgs I am getting unexpected option error. I have tested the wsdl file separately with wsdl2java while passing the same argument. It is working fine there.

Code for passing the arguments -

// additional arguments to wsdl2java
WsdlKeys.wsdlToCodeArgs ++= Seq(
  "-exsh true"
)

Following is the stack trace -

org.apache.cxf.tools.common.ToolException: org.apache.cxf.tools.common.toolspec.parser.BadUsageException: Unexpected option: -exsh true

	at org.apache.cxf.tools.common.toolspec.AbstractToolContainer.execute(AbstractToolContainer.java:180)
	at org.apache.cxf.tools.common.AbstractCXFToolContainer.execute(AbstractCXFToolContainer.java:69)
	at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:414)
	at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:105)
	at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
	at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2$$anonfun$2$$anonfun$3.apply(SbtWsdl.scala:216)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2$$anonfun$2$$anonfun$3.apply(SbtWsdl.scala:189)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
	at scala.collection.AbstractTraversable.map(Traversable.scala:105)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2$$anonfun$2.apply(SbtWsdl.scala:189)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2$$anonfun$2.apply(SbtWsdl.scala:187)
	at com.typesafe.sbt.web.incremental.package$.syncIncremental(package.scala:228)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2.apply(SbtWsdl.scala:187)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2.apply(SbtWsdl.scala:184)
	at play.soap.sbtplugin.SbtWsdl$.play$soap$sbtplugin$SbtWsdl$$withContextClassLoader(SbtWsdl.scala:275)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1.apply(SbtWsdl.scala:184)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1.apply(SbtWsdl.scala:175)
	at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
	at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
	at sbt.std.Transform$$anon$4.work(System.scala:63)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
	at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
	at sbt.Execute.work(Execute.scala:237)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
	at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
	at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.cxf.tools.common.toolspec.parser.BadUsageException: Unexpected option: -exsh true

	at org.apache.cxf.tools.common.toolspec.parser.CommandLineParser.throwUsage(CommandLineParser.java:201)
	at org.apache.cxf.tools.common.toolspec.parser.CommandLineParser.parseArguments(CommandLineParser.java:174)
	at org.apache.cxf.tools.common.toolspec.AbstractToolContainer.parseCommandLine(AbstractToolContainer.java:89)
	at org.apache.cxf.tools.common.toolspec.AbstractToolContainer.execute(AbstractToolContainer.java:178)
	at org.apache.cxf.tools.common.AbstractCXFToolContainer.execute(AbstractCXFToolContainer.java:69)
	at org.apache.cxf.tools.wsdlto.WSDLToJavaContainer.execute(WSDLToJavaContainer.java:414)
	at org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:105)
	at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:113)
	at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2$$anonfun$2$$anonfun$3.apply(SbtWsdl.scala:216)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2$$anonfun$2$$anonfun$3.apply(SbtWsdl.scala:189)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
	at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
	at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
	at scala.collection.AbstractTraversable.map(Traversable.scala:105)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2$$anonfun$2.apply(SbtWsdl.scala:189)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2$$anonfun$2.apply(SbtWsdl.scala:187)
	at com.typesafe.sbt.web.incremental.package$.syncIncremental(package.scala:228)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2.apply(SbtWsdl.scala:187)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1$$anonfun$apply$2.apply(SbtWsdl.scala:184)
	at play.soap.sbtplugin.SbtWsdl$.play$soap$sbtplugin$SbtWsdl$$withContextClassLoader(SbtWsdl.scala:275)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1.apply(SbtWsdl.scala:184)
	at play.soap.sbtplugin.SbtWsdl$$anonfun$wsdlToCodeTask$1.apply(SbtWsdl.scala:175)
	at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
	at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
	at sbt.std.Transform$$anon$4.work(System.scala:63)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
	at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
	at sbt.Execute.work(Execute.scala:237)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
	at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
	at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
	at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:748)
[error] (compile:wsdlToCode) org.apache.cxf.tools.common.ToolException: org.apache.cxf.tools.common.toolspec.parser.BadUsageException: Unexpected option: -exsh true

Migrate Lagom SOAP client

We propose to migrate Lagom SOAP client as a module of this repository.

Lagom SOAP Client need for injecting client, wrapped by Circuit Breaker. I understand that you hardly want to have a Kotlin code in the repo ๐Ÿ˜ƒ But, if you will approve migration, we migrate code to Scala/Java, of course.
My vision about logical structure is next:

  • sbt-plugin โ€” generating source by WSDL for the SOAP client
  • play-soap-client โ€” client library for calling SOAP service from Play applications
  • lagom-soap-client โ€” client library for calling SOAP service from Lagom applications (depends on play-soap-client)
  • docs โ€” documentation

javax.xml.ws.Action is not a repeatable annotation type

I am trying to generate scala+java classes from a wsdl (https://api.abs.uat.valitor.com/external/MerchantApiWS.svc?WSDL) but I get the error IMerchantApiWS.java:31:1: javax.xml.ws.Action is not a repeatable annotation type.

It is very easily reproduced, I only have the following in my build.sbt:

version := "0.1"

scalaVersion := "2.12.6"

libraryDependencies += "com.typesafe.play" %% "play" % "2.6.17"
WsdlKeys.wsdlUrls in Compile += url("https://api.abs.uat.valitor.com/external/MerchantApiWS.svc?WSDL")

And plugins.sbt:

resolvers += Resolver.url("play-sbt-plugins", url("https://dl.bintray.com/playframework/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.typesafe.sbt" % "sbt-play-soap" % "1.1.4")

I followed this readme: https://github.com/playframework/play-soap

Am I doing something wrong?

Separate the generator from the sbt plugin

We would like to use play-soap with maven, and it would be possible if the generator (PlayClientGenerator, PlaySEIGenerator etc.) would be separated from the sbt-plugin, so that it can be used independently. I can prepare a pull request if you would be willing to make this change.

Java 11 : jaxb removed, need to add the dependency explicitly

Hi

I just tried to upgrade my Play Scala project (which has dependency to play-soap) to Java 11.
I have this error java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

I tried adding libraryDependencies += "javax.xml.bind" % "jaxb-api" % "2.3.1"
Because the library has been removed in Java 11.

But the error still appears, maybe the solution is to add the dependency in play-soap.

[info] Processing WSDL: https://api.mondialrelay.com/Web_Services.asmx?wsdl [error] java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException [error] at org.apache.cxf.tools.wsdlto.WSDLToJava.<init>(WSDLToJava.java:48) [error] at play.soap.sbtplugin.SbtWsdl$.$anonfun$wsdlToCodeTask$4(SbtWsdl.scala:216) [error] at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:238) [error] at scala.collection.Iterator.foreach(Iterator.scala:941) [error] at scala.collection.Iterator.foreach$(Iterator.scala:941) [error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1429) [error] at scala.collection.IterableLike.foreach(IterableLike.scala:74) [error] at scala.collection.IterableLike.foreach$(IterableLike.scala:73) [error] at scala.collection.AbstractIterable.foreach(Iterable.scala:56) [error] at scala.collection.TraversableLike.map(TraversableLike.scala:238) [error] at scala.collection.TraversableLike.map$(TraversableLike.scala:231) [error] at scala.collection.AbstractTraversable.map(Traversable.scala:108) [error] at play.soap.sbtplugin.SbtWsdl$.$anonfun$wsdlToCodeTask$3(SbtWsdl.scala:189) [error] at com.typesafe.sbt.web.incremental.package$.syncIncremental(package.scala:228) [error] at play.soap.sbtplugin.SbtWsdl$.$anonfun$wsdlToCodeTask$2(SbtWsdl.scala:187) [error] at play.soap.sbtplugin.SbtWsdl$.withContextClassLoader(SbtWsdl.scala:275) [error] at play.soap.sbtplugin.SbtWsdl$.$anonfun$wsdlToCodeTask$1(SbtWsdl.scala:184) [error] at scala.Function1.$anonfun$compose$1(Function1.scala:49) [error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62) [error] at sbt.std.Transform$$anon$4.work(Transform.scala:67) [error] at sbt.Execute.$anonfun$submit$2(Execute.scala:280) [error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19) [error] at sbt.Execute.work(Execute.scala:289) [error] at sbt.Execute.$anonfun$submit$1(Execute.scala:280) [error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178) [error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) [error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [error] at java.base/java.lang.Thread.run(Thread.java:834)

Unable to configure Socket timeout

Hi,
there's no configurations available about Apache CXF connections or not documented.

Here is the error
java.util.concurrent.CompletionException: java.net.SocketTimeoutException: 60,000 milliseconds timeout on connection http-outgoing-0 [ACTIVE] at java.util.concurrent.CompletableFuture.reportJoin(CompletableFuture.java:375) at java.util.concurrent.CompletableFuture.join(CompletableFuture.java:1947) at services.sap.SapBookService.findByLastUpdate(MyService.java:67) at services.sap.RfcManifestationImportActor.importAllFromSap(MyActor.java:58) at services.sap.RfcManifestationImportActor.onReceive(MyActor.java:37) at akka.actor.UntypedAbstractActor$$anonfun$receive$1.applyOrElse(AbstractActor.scala:339) at akka.actor.Actor.aroundReceive(Actor.scala:539) at akka.actor.Actor.aroundReceive$(Actor.scala:537) at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala:227) at akka.actor.ActorCell.receiveMessage(ActorCell.scala:614) at akka.actor.ActorCell.invoke(ActorCell.scala:583) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:268) at akka.dispatch.Mailbox.run(Mailbox.scala:229) at akka.dispatch.Mailbox.exec(Mailbox.scala:241) at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) Caused by: java.net.SocketTimeoutException: 60,000 milliseconds timeout on connection http-outgoing-0 [ACTIVE] at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.timeout(HttpAsyncRequestExecutor.java:387) at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:92) at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:39) at org.apache.http.impl.nio.reactor.AbstractIODispatch.timeout(AbstractIODispatch.java:175) at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionTimedOut(BaseIOReactor.java:261) at org.apache.http.impl.nio.reactor.AbstractIOReactor.timeoutCheck(AbstractIOReactor.java:502) at org.apache.http.impl.nio.reactor.BaseIOReactor.validate(BaseIOReactor.java:211) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591) at java.lang.Thread.run(Thread.java:823)

I need help on how to solve this problem.

Thanks

SOAP 1.2

I couldn't find it in the doc nor in the code... is it possible to send SOAP 1.2 message? As far as I know, to set SOAP 1.2 you have to call factory.setBindingId(SOAPBinding.SOAP12HTTP_BINDING), which is not possible to call outside of a generated class (PlaySoapClient::createPort in fact).

Is there any other way to set it to SOAP 1.2?

Plugin does resolve when using Play 2.7.3 and Scala 2.13.0

Here is my plugins.sbt

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.7.3")

resolvers += Resolver.url("play-sbt-plugins", url("https://dl.bintray.com/playframework/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.typesafe.sbt" % "sbt-play-soap" % "1.1.4")

And I have in my build.sbt

scalaVersion := "2.13.0"

I get this sbt error

sbt.librarymanagement.ResolveException: unresolved dependency: com.typesafe.play#play-soap-client_2.13;1.1.4: not found

use proxy server

Is there a way to send a soap request via a proxy server; something like withProxyServer(proxy) in the WSClient library

Client certificate authentication

I'm using play-soap to make SOAP requests to a server secured by HTTPS with client certificate authentication.

I can't figure out how to configure my play-soap client to make it using my keystore.

Do I have to implement access to the keystore with Handlers ?

macwire

Hi,

is it possible to use play-soap with macwire and without guice?

Could not find play frontend within classpath

I'm setting up play-soap to generate a SOAP client for the swiss eBill web service in a Play 2.8 app.

I added the last version of the play-soap-client (1.2.0) dependency to my build.sbt file and sbt-cxf 1.6 to my plugins.sbt file.

Here is the config:

cxfWSDLs := Seq(
  Wsdl(
    "eBillB2BService",
    (Compile / resourceDirectory).value / "wsdl/eBillB2BService.wsdl",
    Seq("-fe", "play", "-xjc-Xplay:lang java", "-xjc-Xplay:target play", "-autoNameResolution")
  )
)

the WSDL file can be downloaded from https://ebill-ki.postfinance.ch/B2BService/B2BService.svc?singleWsdl

When I try to compile, I get an error:

[info] WSDL: key=eBillB2BService, args=-d /my-app/common/target/scala-2.13/cxf/main -exsh true -validate -fe play -xjc-Xplay:lang java -xjc-Xplay:target play -autoNameResolution /my-app/common/conf/wsdl/eBillB2BService.wsdl
[info] Compiling WSDL...
[error] Failed to compile wsdl with exception: null
[error] stack trace is suppressed; run last common / Compile / run wsdl2java for the full output
[info] Compiled WSDL in 428ms.

The cause of this error is the -fe play param. When I remove it the error is gone but the generated code isn't the expected one.

When I run last in sbt, I get this output:

[error] Failed to compile wsdl with exception: null
[error] java.lang.reflect.InvocationTargetException
[error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[error] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.callWsdl2java(CxfPlugin.scala:143)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.$anonfun$settings$6(CxfPlugin.scala:89)
[error] 	at scala.collection.immutable.List.flatMap(List.scala:366)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.$anonfun$settings$3(CxfPlugin.scala:87)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[error] 	at java.base/java.lang.Thread.run(Thread.java:833)
[error] Caused by: org.apache.cxf.tools.common.ToolException: Could not find play frontend within classpath
[error] 	at org.apache.cxf.tools.wsdlto.core.PluginLoader.getFrontEnd(PluginLoader.java:246)
[error] 	at org.apache.cxf.tools.wsdlto.core.PluginLoader.getFrontEndProfile(PluginLoader.java:381)
[error] 	at org.apache.cxf.tools.wsdlto.WSDLToJava.loadFrontEnd(WSDLToJava.java:64)
[error] 	at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:96)
[error] 	at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
[error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[error] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.callWsdl2java(CxfPlugin.scala:143)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.$anonfun$settings$6(CxfPlugin.scala:89)
[error] 	at scala.collection.immutable.List.flatMap(List.scala:366)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.$anonfun$settings$3(CxfPlugin.scala:87)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[error] 	at java.base/java.lang.Thread.run(Thread.java:833)[error] Failed to compile wsdl with exception: null
[error] java.lang.reflect.InvocationTargetException
[error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[error] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.callWsdl2java(CxfPlugin.scala:143)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.$anonfun$settings$6(CxfPlugin.scala:89)
[error] 	at scala.collection.immutable.List.flatMap(List.scala:366)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.$anonfun$settings$3(CxfPlugin.scala:87)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[error] 	at java.base/java.lang.Thread.run(Thread.java:833)
[error] Caused by: org.apache.cxf.tools.common.ToolException: Could not find play frontend within classpath
[error] 	at org.apache.cxf.tools.wsdlto.core.PluginLoader.getFrontEnd(PluginLoader.java:246)
[error] 	at org.apache.cxf.tools.wsdlto.core.PluginLoader.getFrontEndProfile(PluginLoader.java:381)
[error] 	at org.apache.cxf.tools.wsdlto.WSDLToJava.loadFrontEnd(WSDLToJava.java:64)
[error] 	at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:96)
[error] 	at org.apache.cxf.tools.wsdlto.WSDLToJava.run(WSDLToJava.java:86)
[error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[error] 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] 	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.callWsdl2java(CxfPlugin.scala:143)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.$anonfun$settings$6(CxfPlugin.scala:89)
[error] 	at scala.collection.immutable.List.flatMap(List.scala:366)
[error] 	at io.paymenthighway.sbt.cxf.CxfPlugin$.$anonfun$settings$3(CxfPlugin.scala:87)
[error] 	at scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] 	at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] 	at sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] 	at sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] 	at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] 	at sbt.Execute.work(Execute.scala:291)
[error] 	at sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] 	at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] 	at sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[error] 	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[error] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[error] 	at java.base/java.lang.Thread.run(Thread.java:833)

I tried to run wsdl2java manually but I cannot find the play-soap-plugin.jar file in the project as shown in the doc: https://playframework.github.io/play-soap/2.x/plugin/cli.html

can't pull sbt plugin Scala 2.12 based project

Hi @marcospereira,

I can't add sbt plugin to the project whose scalaVersion is 2.12.3.
play-soap-client lives at OSS with mvn style, plugin lives at playframework's bintray with ivy style.

It should be useful to publish for Scala 2.12 also and provide a template or sample project to show how sbt plugin can be used without dependency unresolved pain.

Thanks,

Remove exceptions from method signature

Need to try with using PlaySEIGenerator#generate do:

  1. Drop custom sei.vm
  2. Remove exceptions from the generated method signature
  3. Move exceptions to Action annotation
  4. Initialize SOAP faults from Action annotation

Related with #50
See also 7917af6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.