[ 
http://issues.apache.org/jira/browse/AXIS2-401?page=comments#action_12363276 ] 

Aaron Evans commented on AXIS2-401:
-----------------------------------


As an update to this, I did manage to patch this.

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.


> generated client stub throws IOException and requires non-null AXIS2_HOME
> -------------------------------------------------------------------------
>
>          Key: AXIS2-401
>          URL: http://issues.apache.org/jira/browse/AXIS2-401
>      Project: Apache Axis 2.0 (Axis2)
>         Type: Bug
>   Components: client-api
>     Versions: 0.94
>  Environment: Windows XP, JDK 1.5
>     Reporter: Aaron Evans

>
> 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.  
> Stack trace:
>       org.apache.axis2.deployment.DeploymentException: Access is denied;  
> nested exception is: 
>       java.io.IOException: Access is denied
>       at 
> org.apache.axis2.deployment.DeploymentEngine.prepareRepository(DeploymentEngine.java:845)
>       at 
> org.apache.axis2.deployment.DeploymentEngine.<init>(DeploymentEngine.java:117)
>       at 
> org.apache.axis2.deployment.DeploymentEngine.<init>(DeploymentEngine.java:107)
>       at 
> org.apache.axis2.deployment.FileSystemConfigurator.getAxisConfiguration(FileSystemConfigurator.java:55)
>       at 
> org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:39)
>       at 
> org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContextFromFileSystem(ConfigurationContextFactory.java:53)
>       at 
> com.mycompany.WebServiceClientStub.<init>(WebServiceClientStub.java:122)
>       at 
> com.mycompany.test.WebServiceClientStubTest.setUp(WebServiceClientStubTest.java:27)
> Caused by: java.io.IOException: Access is denied
>       at java.io.WinNTFileSystem.createFileExclusively(Native Method)
>       at java.io.File.createNewFile(File.java:850)
>       at 
> org.apache.axis2.deployment.DeploymentEngine.prepareRepository(DeploymentEngine.java:831)
>       ... 17 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to