hi,Sagara,

the Axis2+spring is ok now.


I have a method need return objects.
how can i do?


attahch is my  main config and source:

1.  project folder :

projectName
|----src
|    |----com.xxx.ws
|    |----|-----DataSetServiceEnquiry.java
|    |----com.xxx.ws.pojo
|    |----|-----DataSet.java
|
|----WebRoot
|    |
|    |----WEB-INF
|    |    |----classes
|    |    |----conf
|    |    |    |----axis2.xml
|    |    |----modules
|    |    |    |----addressing-1.4.1.mar
|    |    |    |----axis2-scripting-1.4.1.mar
|    |    |    |----mex-1.4.1.mar
|    |    |    |----modules-1.4.1.mar
|    |    |    |----ping-1.4.1.mar|    |
|    |    |    |----soapmonitor-1.4.1.mar
|    |    |----pojo
|    |    |----services
|    |    |    |----xxx
|    |    |    |    |----META-INF
|    |    |    |    |    |----services.xml
|    |    |    |----services.list
|    |    |    |----version-1.4.1.aar
|    |    |----Web.xml


2. web.xml
in this file, i copy all content from axis2.war /WEB-INF/web.xml

3.services.xml

<serviceGroup>
 <service name="DataSetServiceEnquiry">
   <description>
       simple spring example
   </description>
   <parameter 
name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
   <parameter name="SpringBeanName">dataSetServiceEnquiry</parameter>
       <messageReceivers>
               <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out";
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
       </messageReceivers>
</service>
</serviceGroup>


3.DataSetServiceEnquiry.java

public class DataSetServiceEnquiry {
....ohter code...
   // The web service
   public String getUserAccountCount() {
           return "(RPCMessageReceiver) Total UserAccount count is
:"+String.valueOf(this.getUserAccountManager().findAllUserAccount().size());
   }
   public com.eadi.ws.pojo.DataSet[]  getDataSetList(){

       List list=this.getDataSetManager().findAll();

       com.xxx.ws.pojo.DataSet[]   ds=new com.xxx.ws.pojo.DataSet[list.size()];

       for(int i=0;list!=null & i<list.size();i++){
               com.xxx.dao.hibernate.DataSet
tmpds=(com.eadi.dao.hibernate.DataSet)list.get(i);
               ds[i].setCreatedDate(tmpds.getCreatedDate());
               ds[i].setCreatedUser(tmpds.getCreatedUser());
               ds[i].setDataProvider(tmpds.getDataProvider());
               ds[i].setDataSetId(tmpds.getDataSetId());
                               .......other properties........
       }
       return ds;
   }

}


4. deploy to JBOSS 4.2.3.GA

5.client  from dotnet c#

a)  first method of webservice is ok.
          DataSetServiceEnquiry.DataSetServiceEnquiry ws = new
DataSetServiceEnquiry.DataSetServiceEnquiry();
           DataSetServiceEnquiry.getUserAccountCountResponse response
= ws.getUserAccountCount();
           this.textBox1.Text = [email protected]();

b)  the second method  of webservice have error on jboss:

1:36:07,187 INFO  [STDOUT] 2009-07-31 11:36:07,171 ERROR
[org.apache.axis2.rpc.receivers.RPCMessageReceiver] - Exception
occurred while trying to invoke service method getDataSetList
java.lang.reflect.InvocationTargetException
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at 
org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:165)
       at 
org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
       at 
org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
       at 
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:100)
       at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
       at 
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
       at 
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
       at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
       at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at com.xxx.web.bean.SessionFilter.doFilter(SessionFilter.java:98)
       at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
       at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
       at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
       at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
       at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
       at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
       at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
       at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
       at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
       at 
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
       at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
       at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
       at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
       at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
       at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
       at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.NullPointerException
       at 
com.xxx.ws.DataSetServiceEnquiry.getDataSetList(DataSetServiceEnquiry.java:73)
       ... 34 more
11:36:07,187 INFO  [STDOUT] 2009-07-31 11:36:07,187 ERROR
[org.apache.axis2.engine.AxisEngine] - Exception occurred while trying
to invoke service method getDataSetList
org.apache.axis2.AxisFault: Exception occurred while trying to invoke
service method getDataSetList
       at 
org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:158)
       at 
org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
       at 
org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:100)
       at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:176)
       at 
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
       at 
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
       at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
       at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
       at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at com.xxx.web.bean.SessionFilter.doFilter(SessionFilter.java:98)
       at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
       at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
       at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
       at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
       at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
       at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
       at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
       at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
       at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
       at 
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
       at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
       at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
       at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
       at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
       at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
       at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.reflect.InvocationTargetException
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at 
org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:165)
       at 
org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
       ... 28 more
Caused by: java.lang.NullPointerException
       at 
com.xxx.ws.DataSetServiceEnquiry.getDataSetList(DataSetServiceEnquiry.java:73)
       ... 34 more



2009/7/29 Sagara Gunathunga <[email protected]>:
> Hi,
> I have noticed following problems with your approach.
>
> 1.) You have placed service.xml file in a wrong place , it should be
> like this  /mysite/META-INF/services/services.xml . ( refer [1] to get
> familiar with correct directory structure )
>
> 2.)As a suggestion in DataSetServiceEnquiry class you can expose your
> web service as a POJO method. Axis2 supports for exposing Spring beans
> (POJO) as web services, here you don't need to deal with OMElement
> unless you really want to do so .
>
>  instead of  public OMElement getValue(OMElement ignore)  method,
> simply you can use following method with RPCMessageReceiver (in
> service.xml).
>
>                   public String getValue(){
>                        return this.dataSetEnquiryManager.getValue();
>                       }
>
>
> 3.) you haven't mention any thing about web.xml file or how you deploy
> your service whether it  as a WAR archive or as a AAR archive ?
>
>
>
> [1] - http://www.developer.com/open/article.php/3777111
>
> Thanks ,
>
>
> On Wed, Jul 29, 2009 at 8:44 AM, sam wong<[email protected]> wrote:
>> hi,Sagara
>> first ,  my web site is working.
>>
>> 1.   Spring Bean
>>
>> public interface IDataSetEnquiryManager {
>>   public String getValue();
>> }
>> public class DataSetEnquiryManagerImpl  implements IDataSetEnquiryManager {
>>   public String getValue(){
>>      return "TEST";
>>   }
>> }
>>
>> applicationContext.xml is:
>>
>> <bean id="DataSetServiceEnquiry"
>>        class="com.eadi.ws.DataSetServiceEnquiry">
>>        <property name="dataSetEnquiryManager">
>>                <ref bean="dataSetEnquiryManager" />
>>        </property>
>> </bean>
>> <bean id="dataSetEnquiryManager"
>>               class="com.eadi.service.impl.DataSetEnquiryManagerImpl">
>> </bean>
>>
>> 2.  web service class,
>>
>> DataSetServiceEnquiry.java :
>>
>> package com.eadi.ws;
>> import org.apache.axiom.om.OMAbstractFactory;
>> import org.apache.axiom.om.OMElement;
>> import org.apache.axiom.om.OMFactory;
>> import org.apache.axiom.om.OMNamespace;
>> import org.apache.axiom.om.OMText;
>>
>> import com.eadi.service.IDataSetEnquiryManager;
>> public class DataSetServiceEnquiry {
>>    private IDataSetEnquiryManager dataSetEnquiryManager = null;
>>    public IDataSetEnquiryManager getDataSetEnquiryManager() {
>>                return dataSetEnquiryManager;
>>        }
>>        public void setDataSetEnquiryManager(
>>                        IDataSetEnquiryManager dataSetEnquiryManager) {
>>                this.dataSetEnquiryManager = dataSetEnquiryManager;
>>        }
>>    // The web service
>>    public OMElement getValue(OMElement ignore) {
>>            OMFactory factory=OMAbstractFactory.getOMFactory();
>>            OMNamespace payloadNs=
>> factory.createOMNamespace("http://ws.eadi.com/datasetenquiry";,
>> "datasetenquiry");
>>            OMElement payload =factory.createOMElement("string", payloadNs);
>>            OMText response =
>> factory.createOMText(this.dataSetEnquiryManager.getValue());
>>            payload.addChild(response);
>>            return payload;
>>    }
>> }
>>
>>
>>
>> 3. add services.xml to    /mysite/META-INF/services.xml
>>
>> <serviceGroup>
>>  <service name="DataSetServiceEnquiry">
>>    <description>
>>        simple spring example
>>    </description>
>>    <parameter 
>> name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
>>    <parameter name="SpringBeanName">dataSetServiceEnquiry</parameter>
>>    <operation name="getValue">
>>        <messageReceiver
>> class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
>>    </operation>
>> </service>
>> </serviceGroup>
>>
>>
>>
>> 4. open url in browser :
>> http://localhost:8080/EADIWeb/services/DataSetServiceEnquiry?wsdl
>>
>>
>> and got error result:
>>
>> 11:09:14,877 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception
>> javax.servlet.ServletException: File
>> "/axis2-web/listSingleService.jsp" not found
>>        at 
>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
>>        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>        at 
>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
>>        at 
>> org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:557)
>>        at 
>> org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:481)
>>        at 
>> org.apache.axis2.transport.http.AbstractAgent.renderView(AbstractAgent.java:121)
>>        at 
>> org.apache.axis2.transport.http.ListingAgent.processListService(ListingAgent.java:407)
>>        at 
>> org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:242)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
>>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>        at com.eadi.web.bean.SessionFilter.doFilter(SessionFilter.java:98)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>        at 
>> org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>        at 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>        at 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
>>        at 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
>>        at 
>> org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
>>        at 
>> org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
>>        at 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>        at 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>        at 
>> org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
>>        at 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>        at 
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
>>        at 
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>>        at 
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>        at 
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
>>        at java.lang.Thread.run(Thread.java:595)
>> 11:09:14,877 INFO  [STDOUT] 2009-07-29 11:09:14,877 INFO
>> [org.apache.axis2.transport.http.AbstractAgent] - Old Servlet API
>> :javax.servlet.ServletException: File
>> "/axis2-web/listSingleService.jsp" not found
>>
>>
>>
>>
>> 2009/7/29 Sagara Gunathunga <[email protected]>:
>>> AFAIK there is no any restriction with Spring 2.5 or any other version
>>> , i don't think you will encounter any version problem. As i remember
>>> i have used Spring 2.5.6 without any problems, so you better to try
>>> out first and write back to the list if you get any issue.
>>>
>>> Thanks ,
>>>
>>> On Wed, Jul 29, 2009 at 6:57 AM, sam wong<[email protected]> wrote:
>>>> hi,Sagara,
>>>>
>>>> I found this in the sample page :Spring versions 1.2.6, 1.2.8 and 2.0
>>>> have been tested, but probably any version would work as only the core
>>>> functionality is required.
>>>>
>>>> I am using spring 2.5,
>>>> current axis2 version is not support spring 2.5 ?
>>>>
>>>>
>>>>
>>>> Best & Regards,
>>>> Sam Wong
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> 2009/7/29 Sagara Gunathunga <[email protected]>:
>>>>> Hi ,
>>>>> You can write your functions with Spring/Hibernate as usual and then
>>>>> possible to expose your Spring services ( a bean) as a web service
>>>>> using Axis2 -Spring integration.
>>>>>
>>>>> Basically you have to do following two steps.
>>>>>
>>>>> 1.) Like in any other web framework define the Spring
>>>>> ContextLoaderListener in the web.xml file in order to load the Spring
>>>>> ApplicationContext.
>>>>>
>>>>> 2.) Define SpringServletContextObjectSupplier as the
>>>>> ServiceObjectSupplier for your web service , you can define this in
>>>>> the axis2 service.xml file.
>>>>>
>>>>> please refer[1] for details and code samples.
>>>>>
>>>>> [1] - http://ws.apache.org/axis2/1_5/spring.html
>>>>>
>>>>> Thanks ,
>>>>>
>>>>> On Tue, Jul 28, 2009 at 11:16 PM, sam wong<[email protected]> wrote:
>>>>>> hi, everybody,
>>>>>>
>>>>>> I hava a web project writing with Spring2.5+Hibernate
>>>>>> some function need publish as WebService.
>>>>>> I want to use Axis2 to impletment this.
>>>>>>
>>>>>>
>>>>>> anybody can  give me some Tutorial about this?
>>>>>>
>>>>>>
>>>>>>
>>>>>> thanks a lot..
>>>>>>
>>>>>>
>>>>>>
>>>>>> Sam Wong.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Sagara Gunathunga
>>>>>
>>>>> Blog - http://ssagara.blogspot.com
>>>>> Web - http://sagaras.awardspace.com/
>>>>>
>>>>
>>>
>>>
>>>
>>> --
>>> Sagara Gunathunga
>>>
>>> Blog - http://ssagara.blogspot.com
>>> Web - http://sagaras.awardspace.com/
>>>
>>
>
>
>
> --
> Sagara Gunathunga
>
> Blog - http://ssagara.blogspot.com
> Web - http://sagaras.awardspace.com/
>

Reply via email to