I am using Apache Axis 1.1 and WSAD 5.1.0. I have created my own custom handlers and have added my own client-config.wsdd file. I am having trouble with WSAD picking up my file rather than the client-config.wsdd contained in the axis.jar or in the wsif.jar.
I have read the FAQ concerning where to place the client-config.wsdd file it says to :
1. Place the file in the working directory of the process in which it is running
2. If no client-config.wsdd was found then it checks on the classpath in the package org/apache/axis/client
I have tried placing my client-config.wsdd file in a variety of places including the root of the EAR, a WEB-INF folder I created in the EAR, placing it in a variety of locations in the package org.apache.axis.client. None of these places seems to override the client-config.wsdd in the axis.jar or wsif.jar files. I thought that this might be an issue with the order classes are being loaded until I removed the client-config.wsdd file from the axis.jar and the wsif.jar. When I did this, I received a "org.apache.axis.ConfigurationException: No engine configuration file - aborting!" error. So, if this is a solution, what is my working directory?
3.Using the system property axis.ClientConfigFile=/location/of/client-config.wsdd
This works great; however, I develop on a Windows 2000 machine and deploy to a Linux machine. I am also setting the system property in my code. I know that I can use ANT to replace the value for me based on my deployment task for each environment, but this seems way more difficult than it needs to be.
Also, rather than using the name client-config.wsdd, I have changed the name to be specific to my application -- like xxx-client-config.wsdd -- and tried to place it in a directory within my classpath, but it still can't find the file. I receive the "org.apache.axis.ConfigurationException: No engine configuration file - aborting!" error. It seems like I have the same question here, where is my working directory?
My custom client-config.wsdd and xxx-client-config.wsdd files can be found if I place them in the axis.jar or the wsif.jar. But, I really don't want to be changing jar files. It starts becoming a maintenance nightmare.
Has anyone else run across this problem? Am I missing something obvious? My preferred solution would be to not alter the axis.jar or wsif.jar files and to be able to place my client-config.wsdd file in the working directory -- even if this means setting the system property in my code to be something like .
1. WSAD's working directory is - <WSAD Install Directory>\v5.1\runtimes\base_v5\bin It would be very strange to place an application specific file here.
2. The application's client-config.wsdd can be found if I create a shared library and add it to the server's classloader. But, this is still platform specific.
3. The system property "axis.ClientConfigFile" can be set without using the absolute path (thus, avoiding being platform specific).
That's exactly what I wanted it to do! My application's code interacting with Axis was in a jar file. If I placed the client config file in the jar file, it could be found. First, I placed it in the base or the root of the directory of the jar. That worked fine. I also found out that I can place it in a package and have it found there, too: