Re: axis2 with spring doesn't work on the weblogic, I have a temp solution

2007-11-13 Thread robert lazarski
Yes, I have advice: prevent weblogic from loading its own stax version
in its higher precedence classloader. Please read these instructions
carefully from:

http://ws.apache.org/axis2/1_3/app_server.html

"2. Lack of namespacing on serialised items BEA WebLogic Server 9.0
comes with its own StAX implementation. This results in lack of
namespacing on serialised items. In turn, WebLogic server (WLS) breaks
with AXIOM on the WLS classpath. Hence a filtering classloader is
required: Adding the following to weblogic-application.xml should
resolve this issue:


com.ctc.wstx.*
javax.xml.*
org.apache.*

"

HTH,
Robert

On Nov 13, 2007 5:18 AM, Diegoq Lin <[EMAIL PROTECTED]> wrote:
> hi all,
> I am so disappointed to tell you it didn't work according to what Robert said 
> yet. The issue:
>
> the standard war package without specific weblogic config file extracted into 
> autodeploy dictionary of weblogic9.2 did work well! But the war package 
> didn't work. The exception as follow(by the way I am using the axis2.1.3.):
> Caused by: java.lang.NullPointerException
> at 
> org.apache.axis2.extensions.spring.receivers.SpringServletContextObje
> ctSupplier.getServiceObject(SpringServletContextObjectSupplier.java:58)
> the corresponding code is :
> Parameter servletConfigParam = 
> axisService.getAxisConfiguration().getParameter(HTTPConstants.HTTP_SERVLETCONFIG);
>
> I am sure that axisService.getAxisConfiguration() was NULL!
>
> I think http://ws.apache.org/axis2/1_3/app_server.html is stale. As the link 
> inside the web is still about weblogic8.1. The most thing is that It didn't 
> work when I did it according to the instruction.
>
> config is below:
> the axis2.war\META-INF\weblogic-application.xml file :
> 
> http://www.bea.com/ns/weblogic/90"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>   
> com.ctc.wstx.*
> javax.xml.*
> org.apache.*
>   
> 
>
> the axis2.war\WEB-INF\weblogic.xml :
> 
> http://www.bea.com/ns/weblogic/90";>
>   
> true
>   
> 
>
> whether the app is deployed by war package or not, the exception is :
> java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory
> at 
> javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136
> )
> at 
> weblogic.servlet.internal.WebAppHelper.addListenerElements(WebAppHelp
> er.java:244)
> at 
> weblogic.servlet.internal.WebAppHelper$IOHelperImpl.parseXML(WebAppHe
> lper.java:224)
> at 
> weblogic.descriptor.DescriptorCache.parseXML(DescriptorCache.java:324
> )
> at 
> weblogic.servlet.internal.WebAppHelper.registerTagLibListeners(WebApp
> Helper.java:174)
>
> Do you have any advice? Thank you very much.
>
> Regards
> javafoot
>
>
> - Original Message -
> From: "robert lazarski" <[EMAIL PROTECTED]>
> To: 
> Sent: Monday, November 12, 2007 8:57 PM
> Subject: Re: axis2 with spring doesn't work on the weblogic, I have a temp 
> solution
>
>
> > 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:
>

Re: axis2 with spring doesn't work on the weblogic, I have a temp solution

2007-11-13 Thread Diegoq Lin
hi all,
I am so disappointed to tell you it didn't work according to what Robert said 
yet. The issue:

the standard war package without specific weblogic config file extracted into 
autodeploy dictionary of weblogic9.2 did work well! But the war package didn't 
work. The exception as follow(by the way I am using the axis2.1.3.):
Caused by: java.lang.NullPointerException
at org.apache.axis2.extensions.spring.receivers.SpringServletContextObje
ctSupplier.getServiceObject(SpringServletContextObjectSupplier.java:58)
the corresponding code is : 
Parameter servletConfigParam = 
axisService.getAxisConfiguration().getParameter(HTTPConstants.HTTP_SERVLETCONFIG);

I am sure that axisService.getAxisConfiguration() was NULL!

I think http://ws.apache.org/axis2/1_3/app_server.html is stale. As the link 
inside the web is still about weblogic8.1. The most thing is that It didn't 
work when I did it according to the instruction.

config is below: 
the axis2.war\META-INF\weblogic-application.xml file : 

http://www.bea.com/ns/weblogic/90"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
  
com.ctc.wstx.*
javax.xml.*
org.apache.*
  


the axis2.war\WEB-INF\weblogic.xml : 

http://www.bea.com/ns/weblogic/90";>
  
true
  


whether the app is deployed by war package or not, the exception is :
java.lang.ClassCastException: com.ctc.wstx.stax.WstxInputFactory
at javax.xml.stream.XMLInputFactory.newInstance(XMLInputFactory.java:136
)
at weblogic.servlet.internal.WebAppHelper.addListenerElements(WebAppHelp
er.java:244)
at weblogic.servlet.internal.WebAppHelper$IOHelperImpl.parseXML(WebAppHe
lper.java:224)
at weblogic.descriptor.DescriptorCache.parseXML(DescriptorCache.java:324
)
at weblogic.servlet.internal.WebAppHelper.registerTagLibListeners(WebApp
Helper.java:174)

Do you have any advice? Thank you very much.

Regards
javafoot


- Original Message - 
From: "robert lazarski" <[EMAIL PROTECTED]>
To: 
Sent: Monday, November 12, 2007 8:57 PM
Subject: Re: axis2 with spring doesn't work on the weblogic, I have a temp 
solution


> 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) {
>&

Re: axis2 with spring doesn't work on the weblogic, I have a temp solution

2007-11-12 Thread robert lazarski
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:
> > 
> > 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";>
> >
> >  
> >
> >> class="sample.axisversion.GlobalSpringContext" lazy-init="false" />
> > 
> >
> > 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.apac

Re: axis2 with spring doesn't work on the weblogic, I have a temp solution

2007-11-12 Thread robert lazarski
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:
> 
> 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";>
>
>  
>
>class="sample.axisversion.GlobalSpringContext" lazy-init="false" />
> 
>
> 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 {
>

axis2 with spring doesn't work on the weblogic, I have a temp solution

2007-11-12 Thread Diegoq Lin
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:

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";>

 
  
  


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:


This service is to get the running Axis version


  
sample.axisversion.MyServiceObjectSupplier
  
  myVersion







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 wou