-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 So could I generate client code directly from a class annotated with @WebService, without generating an intermediary WSDL? I couldn't find a way to do that with wsgen/wsimport, but I'd love it if that was possible.
Daniel Kulp wrote: | | One option is to go completely code first and not generate anything. | Use the same SEI interface for the client and for the service impls. | You don't need to generate any wsdl's or anything then. I know Apache | CXF supports that directly without problems. No generation of anything | needed at all. With the Sun RI, you would still need wsgen to generate | the wrapper beans/fault beans, but it can also compile them. | | Dan | | | | On May 21, 2008, at 1:03 PM, Clint Gilbert wrote: | | Jan, thank you very much for your suggestion. | | That was almost the first thing I tried. The problem is that my web | service instances (I | call them Nodes - they're components of a distributed DB system) need | to talk to each other. | | A Node needs to be compiled to generate the client bindings, and a | Node needs to invoke | the bindings to talk to other Nodes. There's always a circular | dependency. I tried to | get around this by abstracting the process of talking to a node in | order to hide the JAXWS | client bindings from the nodes that use them. That let me attempt the | two-pass | compilation hack, but can't get around the circular dependency. | | I think I'm going to bootstrap my module by checking in the generated | code and artifacts. | | Just for reference, does anyone know for sure if you can give | different configs for | different <execution>s of maven-compiler-plugin? | | Jan Fredrik Wedén wrote: | | Hi, | | | | Could you not split this into two modules where your step 4 resides in | | a module which dependes on another module containing the results from | | 1, 2 and 3? Seems like the most correct Maven-way if you are allowed | | to split your codebase to accomplish this. | | | | On Wed, May 21, 2008 at 2:48 AM, Clint Gilbert | | <[EMAIL PROTECTED]> wrote: | | Hello everyone, | | | | First of all, I cannot overstate the beneficial effect that Maven | has had on | | the | | development process at my organization. To the devs: thanks for the | great | | tool! | | | | I have a pom that specifies two executions of the compiler plugin, with | | different phases | | specified and different configs, but they're not both running. (See | pom | | excerpt below.) | | Is that expected? Can I configure multiple executions of the compiler | | plugin with | | different configurations? It seems like no - [1], [2], [3] - but I | hope | | someone has an | | definitive answer. | | | | Here's some background on my problem, which I admit is fairly obscure. | | Basically, what I | | need to do is: | | | | 1 Compile class A in package org.myorg, which is annotated with | @WebService | | | | 2 Run JAXWS's wsgen (via maven-jaxws-plugin) to make a WSDL from the | | compiled A.class | | | | 3 Run JAXWS's wsimport (via maven-jaxws-plugin) to make client-side | bindings | | from the | | just-generated WSDL | | | | 4 Compile non-generated classes that reference the just-generated | client | | bindings. These | | live in separate sub-packages - org.myorg.x, org.myorg.y, etc - and | would | | have failed if | | compiled during step 1 because they reference code generated in step 3. | | | | I've included (what I hope are) the relevant sections of my pom below. | | | | PS: Do I need to do things this way? Unfortunately, I think so. Class | | org.myorg.A is a | | web service that needs to invoke other org.myorg.A web services | arranged in | | a tree or mesh | | topology. I've tried to break out the bindings, the SEI (A), and the | | classes that | | abstract the connection between As using the client bindings into | | submodules, but I've | | only managed to introduce circular dependencies. | | | | In the past, I've dealt with this sort of chicken-and-egg problem by | | generating WSDLs and | | code and then checking them into source control. This feels bad, | and makes | | updates if the | | interface of the SEI changes a hassle. I'd much rather define a | simple SEI | | annotated with | | @WebService and have the low-level stuff (WSDLs, client bindings) | generated | | from that. | | | | [1] | | | http://weblogs.java.net/blog/ss141213/archive/2007/11/my_maven_experi.html | | | [2] | | | http://mail-archives.apache.org/mod_mbox/maven-users/200711.mbox/[EMAIL PROTECTED] | | | [3] | | | http://mail-archives.apache.org/mod_mbox/maven-users/200609.mbox/[EMAIL PROTECTED] | | | | | | <plugin> | | | <artifactId>maven-compiler-plugin</artifactId> | | | <executions> | | | <execution> | | | <id>jaxws-pre-compilation-hack</id> | | | <!-- Hack to specify order of plugin | application --> | | | <phase>process-sources</phase> | | | <configuration> | | | <source>1.5</source> | | | <target>1.5</target> | | | <includes> | | | | | <include>${source.dir}/org/myorg</include> | | | </includes> | | | <excludes> | | | | | <exclude>${source.dir}/org/myorg/x</exclude> | | | | | <exclude>${source.dir}/org/myorg/y</exclude> | | | </excludes> | | | <goals> | | | <goal>compile</goal> | | | </goals> | | | </configuration> | | | </execution> | | | <execution> | | | <id>normal-compilation</id> | | | <!-- Hack to specify order of plugin | application --> | | | <phase>compile</phase> | | | <configuration> | | | <source>1.5</source> | | | <target>1.5</target> | | | </configuration> | | | <goals> | | | <goal>compile</goal> | | | </goals> | | | </execution> | | | </executions> | | | </plugin> | | | <plugin> | | | <groupId>org.codehaus.mojo</groupId> | | | <artifactId>jaxws-maven-plugin</artifactId> | | | <executions> | | | <execution> | | | <id>make-wsdl</id> | | | <!-- Hack to specify order goals are run in --> | | | <phase>generate-resources</phase> | | | <goals> | | | <goal>wsgen</goal> | | | </goals> | | | <configuration> | | | <sei>org.myorg.A</sei> | | | ... | | | </configuration> | | | </execution> | | | <execution> | | | <id>make-client-bindings</id> | | | <!-- Hack to specify order goals are run in --> | | | <phase>process-resources</phase> | | | <goals> | | | <goal>wsimport</goal> | | | </goals> | | | <configuration> | | | ... | | | </configuration> | | | </execution> | | | </executions> | | | ... | | | </plugin> | | | | | | | |> | |> | --------------------------------------------------------------------- | To unsubscribe, e-mail: [EMAIL PROTECTED] | For additional commands, e-mail: [EMAIL PROTECTED] | |> | |> | |> |> - --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] |> | --- | Daniel Kulp | [EMAIL PROTECTED] | http://www.dankulp.com/blog | --------------------------------------------------------------------- | To unsubscribe, e-mail: [EMAIL PROTECTED] | For additional commands, e-mail: [EMAIL PROTECTED] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFINKWrrZoE3ArapxERCBxqAKCU3L8n26Q7RljP+ne7H52BzEJtpwCgvFMA RL+sBCrmN8/LzW8OnFeXg+I= =9lA3 -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]