Oh yeah, please follow the instructions in the link first and my
general ideas. If that fails, any patches need to be put into a jira
issue that you create. My guess though is that this is a weblogic
classloader issue that can be solved via the link below.

Robert

On Nov 12, 2007 7:53 AM, robert lazarski <[EMAIL PROTECTED]> wrote:
> What version of axis2 are you using? You don't seem to be using the
> latest stable version 1.3, as line 58 is:
>
> 58                 if (servletConfigParam == null) {
>
> Furthermore, have you read this?
>
> http://ws.apache.org/axis2/1_3/app_server.html
>
> Your problem seems like its classloader related, ie, its possible by
> following the instructions in the above link you can solve the
> problem. While its been a while since I've used weblogic, some simple
> googling show people have been running spring / axis2 / weblogic
> successfully.
>
> If all else fails, while I'm hesitant to patch axis2 for specific app
> servers and would probably verify the problem myself first that
> there's absolutely no other way - the first step would be getting your
> code to compile with svn or a nightly:
>
> http://people.apache.org/dist/axis2/nightly/
> http://ws.apache.org/axis2/svn.html
>
> HTH,
> Robert
>
>
> On Nov 12, 2007 6:22 AM, Diegoq Lin <[EMAIL PROTECTED]> wrote:
> > hi all,
> >
> > I have a strange issue. I integrated axis2 and spring2.0.5. And I 
> > distributed the app on the tomcat5.5.20, it works well. but the same war 
> > package was put down the directory "autodeploy" of weblogic9.2, It didn't 
> > work and had many excetions. The most valueable exception is as follow:
> >
> > Caused by: java.lang.NullPointerException
> >         at 
> > org.apache.axis2.extensions.spring.receivers.SpringServletContextObje
> > ctSupplier.getServiceObject(SpringServletContextObjectSupplier.java:58)
> >         ... 53 more
> >
> > I inquired the code in number 58:
> > Parameter servletConfigParam = axisService.getAxisConfiguration()
> >  .getParameter(HTTPConstants.HTTP_SERVLETCONFIG);
> >
> > if (servletConfigParam == null) {
> >     throw new Exception("Axis2 Can't find ServletConfigParameter");
> > }
> > Object obj = servletConfigParam.getValue();
> > ServletContext servletContext;
> > if (obj instanceof ServletConfig) {
> >     ServletConfig servletConfig = (ServletConfig)obj;
> >     servletContext = servletConfig.getServletContext();
> > } else {
> >     throw new Exception("Axis2 Can't find ServletConfig");
> > }
> > ApplicationContext aCtx =
> >  WebApplicationContextUtils.getWebApplicationContext(servletContext);
> > any help would be appreciated.
> >
> > the method main function is just find out the spring application context in 
> > the servletContext properties.
> > after servlet initialized phase, ConfigurationContext and AxisConfiguration 
> > objects are impossibly null. why axis2 get a null object? see the 
> > getAxisConfiguration method:
> >     public AxisConfiguration getAxisConfiguration() {
> >
> >         if (this instanceof AxisConfiguration) {
> >             return (AxisConfiguration) this;
> >         }
> >
> >         if (this.parent != null) {
> >             return this.parent.getAxisConfiguration();
> >         }
> >
> >         return null;
> >     }
> >
> > the implementation of the method is the problem! I don't know how to do 
> > correctly. my temp solution that can make the application work on the 
> > weblogic is as follow:
> >
> > 1.add the bean in applicationContext.xml:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <beans xmlns="http://www.springframework.org/schema/beans"; 
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> >        xsi:schemaLocation="http://www.springframework.org/schema/beans 
> > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd";>
> >
> >  <bean id="myVersion" class="sample.axisversion.Version" />
> >
> >   <bean id="globalSpringContext" 
> > class="sample.axisversion.GlobalSpringContext" lazy-init="false" />
> > </beans>
> >
> > 2.new the class GlobalSpringContext.java:
> > package sample.axisversion;
> >
> > import org.springframework.beans.BeansException;
> > import org.springframework.context.ApplicationContext;
> > import org.springframework.context.ApplicationContextAware;
> >
> > public class GlobalSpringContext implements ApplicationContextAware {
> >     private static ApplicationContext ac;
> >
> >  /* (non-Javadoc)
> >      * @see 
> > org.springframework.context.ApplicationContextAware#setApplicationContext(org.springframework.context.ApplicationContext)
> >     */
> >     public void setApplicationContext(ApplicationContext ac) throws 
> > BeansException {
> >      GlobalSpringContext.ac = ac;
> >
> >     }
> >
> >  public static ApplicationContext getApplicationContext() {
> >     return ac;
> >  }
> > }
> >
> > 3.new the MyServiceObjectSupplier.java:
> > package sample.axisversion;
> >
> > import org.apache.axis2.AxisFault;
> > import org.apache.axis2.description.AxisService;
> > import 
> > org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier;
> > import org.apache.axis2.i18n.Messages;
> > import org.apache.commons.logging.Log;
> > import org.apache.commons.logging.LogFactory;
> > import org.springframework.context.ApplicationContext;
> >
> > public class MyServiceObjectSupplier extends 
> > SpringServletContextObjectSupplier {
> >
> >
> >     private static Log log = 
> > LogFactory.getLog(MyServiceObjectSupplier.class);
> >     /**
> >      * Method getServiceObject that is Spring aware via ServletContext.
> >      *
> >      * @param axisService
> >      * @return Returns Object.
> >      * @throws AxisFault
> >      */
> >     public Object getServiceObject(AxisService axisService) throws 
> > AxisFault {
> >         try {
> >             String beanName = 
> > ((String)axisService.getParameter(SERVICE_SPRING_BEANNAME).getValue()).trim();
> >             if (beanName != null) {
> >                 ApplicationContext aCtx = 
> > GlobalSpringContext.getApplicationContext();
> >                 if (aCtx == null) {
> >                     log.warn("Axis2 Can't find Spring's 
> > ApplicationContext");
> >                     return null;
> >                 } else if (aCtx.getBean(beanName) == null) {
> >                     throw new Exception("Axis2 Can't find Spring Bean: " + 
> > beanName);
> >                 }
> >                 return aCtx.getBean(beanName);
> >             } else {
> >                 throw new AxisFault(
> >                         Messages.getMessage("paramIsNotSpecified", 
> > "SERVICE_SPRING_BEANNAME"));
> >             }
> >         } catch (Exception e) {
> >             throw AxisFault.makeFault(e);
> >         }
> >     }
> > }
> >
> > 4.services.xml:
> > <service name="Version">
> >     <description>
> >         This service is to get the running Axis version
> >     </description>
> >     <!--parameter 
> > name="ServiceClass">sample.axisversion.Version</parameter-->
> >   <parameter name="ServiceObjectSupplier" locked="false">
> >     sample.axisversion.MyServiceObjectSupplier
> >   </parameter>
> >   <parameter name="SpringBeanName" locked="false">myVersion</parameter>
> >
> >     <operation name="getVersion">
> >     <messageReceiver  
> > class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
> >     </operation>
> > </service>
> >
> >
> > However i still want to know why it works on tomcat but it doesn't work on 
> > weblogic. Do you have any experience about it? Any help would be 
> > appreciated. thanks.
> >
> > Best Regards
> >
> > javafoot
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to