Hello,

One little question concerning the Axis-generated Java stub client:

The MyServiceLocator class (which actually contains an attribute like:

  private final java.lang.String kercash_address = 
  "http://172.20.140.221/axis/services/myservice";;

declares it as "private final".

Why is that a problem? Because one normally generates a set of client 
stubs and packages them somehow, puts them in production etc. What if the
address of the wsdl changes - which, by the way, kind of happens all the time as
you deploy it on different test machines with different locations of the WSDL 
only to get it in production.

So, what does one do? He does not regenerate everytime the classes (on prod
machines often there aren't even compilers). So he seeks to parameterize the
location of the wsdl, like, say:

locator = new MyServiceLocator("http://172.20.140.221/axis/services/myservice";)

But, wait! There is no such constructor, as the address of the WSDL is
hardwired. No problem, says the Java programmer, I will get it my way:

class ParameterizableMyServiceLocator extends MyServiceLocator {
  ParameterizableMyServiceLocator (String wsdlLocation) {
    myservice_address = wsdlLocation;
  }
}

No go: myservice_address is "final private", not simply "protected"; this 
makes sense as long as the idea is hardwiring it. But the question is: would
it be possible to only "protect" it so that runtime parameterization can be done?

Thank you,
Adrian Petru Dimulescu

Reply via email to