Hi Jervis,

I honestly don't care - an application context can be initialized with any kind of resource: classpath, file, url, ... It's more a question of adding what parametrisations of createBus the factory offers and passing the resp. parameters on (system properties are only a fallback).

Why do you need your own Configurer to deal with handler chain cfg specied in the J2ee syntax? To keep the number of different cfg file formats (wsdl, spring etc) down we should not encourage using such handler files by allowing to specify them as parameters to the bus. Instead we should limit support of these to processing @HandlerChain annotation files.

Andrea.

Liu, Jervis wrote:

Hi Andrea, I ran into a similar problem when I try to use Configurer to load 
and parse my own config file (see 
AnnotationHandlerChainBuilder.buildHandlerChainFromClass()). In my case, I 
create a new Configure to do the job, as it only needs to be aware of my 
handler config file and corresponding jaxb property editor file. The problem I 
have is that I can not specify my own classloader that is used to load handler 
cfg file for ConfigurerImpl or JaxbClassPathXmlApplicationContext.

There might be two ways to fix it. One is allow passing URLs into ConfigurerImpl (ConfigurerImpl can only pass in one cfg file, it better can deal with an array of cfg files). The parameter type does not have to be URL type, but can be a URL format string (eg., file://d:/handerls.xml), underlyingly we first try to parse the input string using File format, if it fails try URL. Another way to fix the problem is to write my HandlerChainClassPathXmlApplicationContext in jaxws/handler package, this context can pass in a classloader to load specified cfg file.
Which way do you prefer? I feel the first one can address a more general 
requirement.

Cheers,
Jervis

-----Original Message-----
From: Smyth, Andrea Sent: Friday, September 29, 2006 4:05 PM
To: [email protected]
Subject: Re: About the user defined configuration file


Jiang Ning wrote:

Hi Andrea,
In current cxf user defined configuration file name was passed by System Properity
-Dcxf.config.file=user_defined_configuration
This user defined configuration file name will be treat as ClassPathResource.

public ConfigurerImpl(String cfgFile) {
      if (null == cfgFile) {
cfgFile =
System.getProperty(USER_CFG_FILE_PROPERTY_NAME);
      }
      if (null == cfgFile) {
          cfgFile = DEFAULT_USER_CFG_FILE;
      }
      ClassPathResource cpr = new ClassPathResource(cfgFile);
      if (cpr.exists()) {
          try {
ApplicationContext ac = new JaxbClassPathXmlApplicationContext(cfgFile);
              setApplicationContext(ac);
          } catch (BeansException ex) {
LogUtils.log(LOG, Level.WARNING, "APP_CONTEXT_CREATION_FAILED_MSG", ex, (Object[])null);
          }
      } else {
LOG.log(Level.INFO, new Message("USER_CFG_FILE_NOT_FOUND_MSG", LOG, cfgFile).toString());
      }
  }

There is an issue about the user defined configuration. If the user_defined_configuration file name is same as cxf.xml in
the classpath
or the user_defined_configuration file not in the classpath. The user_defined_configuration file would not be loaded rightly.
Hi Willem,

What do you mean with 'same as cxf.xml on the classpath'? The default user cfg file (cxf.xml) is not the same as META-INF/cxf/cxf.xml. I don't see a problem as there is no cxf.xml on the classpath unless a user puts one there.

Andrea.

My suggestion is configurer treats the
user_defined_configuration file
as URL like Celtix had done before, to make sure the configuration file right there.
Any other thought?

Willem.


Reply via email to