As long as the WSDL's are equivalent, there should be no need to regenerate 
everything for production vs. test.   The generated service object has a 
constructor that takes the URL of the WSDL as a parameter.  If you can get the 
servers URL passed into your application somehow (properties file, context 
param, jndi, etc…), then just use that in the constructor and you should be all 
set.

Alternatively, as Glen mentioned, use the "local" WSDL and just override the 
endpoint address with the request property.   Thus, the WSDL is local (and thus 
faster to parse and such), but it would still use the servers address for the 
actual soap request.

Dan


On Mar 14, 2013, at 12:22 PM, Geeb Otron <[email protected]> wrote:

> Hello,
> My question is about auto-generation of CXF code in test and production
> environments.
> 
> My web app:
> 
>   1. Consumes a remote web-service
>   2. Connects to an oracle DB
>   3. Uses the Spring framework
>   4. Uses Maven
>   5. Runs on tomcat and is exported as a WAR file.
> 
> I have different environments in which I need to run my app, and ultimately
> publish into a production environment, using a production instance of
> Oracle, and of the web-service.
> 
> What I want to know is the best-practice in terms of having the minimum
> amount of environmental config inside my app and the maximum in the
> environment in which the app runs.
> 
> For example, with the Oracle database, a connection pool (C3P0) is
> configured and managed by Tomcat, so my app simply uses a named resource to
> grab a database connection object (configured as the web-app starts in the
> Spring XML config files, and in the web.xml file)
> 
> So irrespective of where the web-app is running the Tomcat instance
> provides the connection pool for the the correct database: No configuration
> is required in my app other than getting the <resource-ref> section of the
> web.xml file correct in the first place, as all instances of Tomcat uses
> the same name for their DB connection resource.
> 
> Is there a similar approach for configuring the reference to the service
> endpoint on the instance of Tomcat that hosts my web-app?
> 
> I use the Maven cxf-codegen-plugin and currently have to regenerate and
> rebuild the underlying CXF source code as I move from consuming the test
> version of the web-service, to the production one.
> 
> Ideally I would like to generate the CXF code once (as the service
> endpoints use pretty much the same public interfaces), but for the app to
> pick up the specific URL of the service from the Tomcat environment and it
> not have to be hard-coded into the web-app.
> 
> Currently I use a property inside the Maven pom.xml to replace the local
> path the WSDL file as I generate code for a specific environment. (I keep
> local copies of the WSDL files for all the instances of the web-service)
> 
> As I say, ideally I would like to bypass having to regenerate and compile
> the code completely if possible, as it seems a faulty approach to tamper
> with an artifact that has been signed-off in testing, before it reaches
> production!
> 
> Thanks for any advice!
> -- 
> Geeb
> 
> If you ain't keen to show me the source, I ain't keen to execute the
> program.

-- 
Daniel Kulp
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to