Aaron Evans <aaronmevans <at> yahoo.ca> writes: > > I generated a client stub based on some wsdl using the eclipse plugin. > > In my stub, it created a static String for axis home and set it to null. > It also had a comment that suggested this was ok: > > //default axis home being null forces the system to pick up the > //mars from the axis2 library > public static final String AXIS2_HOME = null; > > However, when I run my client from windows, I get the stack trace given below. > > If I set this value to a path that points to a directory with axis2.xml and > the modules directory in it, then it works fine. > > However, since I am just using axis in a client capacity and I didn't change > the default axis2.xml or modules, I really think I should be able to run it > without having to specify any "AXIS2_HOME" configuration. > > I have tried a few workarounds, but haven't been successful yet. >
As an update to this, I did manage to patch this and I explain how to do it here if anyone else is interested. If axis home is null, then it attempts to use the user's home directory and I believe that is what was causing the "java.io.IOException: Access is denied" exception. To fix this this first problem, I forced it to use null for the repo location by implementing a simple AxisConfigurator that extends FileSystemConfigurator: public class MyClientAxisConfigurator extends FileSystemConfigurator { public MyClientAxisConfigurator() { //Use null for axis home //Use false for isServer super(null,false); } public AxisConfiguration getAxisConfiguration() throws AxisFault { //pass null for repo location return new DeploymentEngine().loadClient(null); } } Then it is just a matter of modifying the generated Client stub constructor that takes an endpoint as an argument like so: public WebServiceClientStub(String targetEndpoint) throws java.lang.Exception { //comment out this line //this( new ConfigurationContextFactory().createConfigurationContextFromFileSystem( AXIS2_HOME), targetEndpoint); //add this line this(new ConfigurationContextFactory().createConfigurationContext( new MyClientAxisConfigurator()),targetEndpoint); } Finally, the "addressing" module is required, so I simply copied addressing.mar from the axis binary distribution to my lib directory and renamed it to addressing.jar and added to the class path of my eclipse project. hope this is helpful to someone. I will update the JIRA issue as well. aaron