WSO2Con 2013 CFP Banner

Developing Web Services Using Apache Axis2 Eclipse Plugins - Part 1

Editors Note: This article has been subsumed and replaced by "Writing Axis2 Services with WSO2 Developer Studio" which offers a comprehensive replacement for the old Axis2 Eclipse plugs-ins. You can download the 100% open source WSO2 Developer Studio here.

Apache Axis2 Eclipse Plugins allow Web service developers to easily and speedily expose the available plain old Java applications as Web services. This tutorial by Lahiru Sandakithconsists of two parts, with two examples that walk you through developing and deploying a sample Web service using the Top-down (Contract First) and Bottom-up (Code First) approach using Axis2 Eclipse Plugins.

Date: Sun, 10th Jun, 2007
Level: Introductory
Reads: 526437
Discuss this article on Stack Overflow
Lahiru Sandakith
Software Engineer
WSO2 Inc.
sandakith's picture

The tutorial is written for Eclipse SDK v3.2 and Axis2 Eclipse Plugin v1.3.

Contents

Introduction

Apache Axis2 is the most popular and widely used core engine for Web services. It is a complete re-design and re-write of the widely used Apache Axis SOAP stack built on the lessons learned from Apache Axis. Apache Axis2 is more efficient, more modular, and more XML-oriented than the older version. It is carefully designed to support the easy addition of plugin "modules" that extend its functionality for features such as security and reliability. On the other hand, Eclipse is a project aiming to provide a universal tool set for development. It is an open source IDE that is mostly provided in Java, but the development language is independent and not limited in any way. It is the most widely used IDE for most computer languages, especially for JAVA.

Developing applications using any programming language is becoming easier with the availability of tooling. If tooling is available in areas like JAVA application development, it will facilitate faster and easier application development, and also increase the productivity of the developers. Most integrated development environments (IDEs) address the tooling and the features available around a particular area of development. Most IDEs available today go beyond supplying traditional tooling facilities, which address only certain areas in programming. They are becoming frameworks for developing applications.

This tutorial mainly focuses on the two above mentioned tools available for Web service developers. They are, Axis2 Eclipse Plugins, which are built around Eclipse-the Framework available for JAVA application development, and Axis2- the widely used core engine for Web services. These tools help the developers to easily expose their available plain old JAVA applications as Web services, using wizards.

This tutorial is split into two parts covering two basic Web services scenarios of Web service in the Bottom Up (Code First) and Top Down (Contract First) approaches with the Axis2 Eclipse Plugins.

PART 1 - Axis2 Eclipse Plugin demonstration of Bottom Up Approach of Web services Development.

PART 2 - Axis2 Eclipse Plugin demonstration of Top Down Approach of Web services Development.

Tutorial Scenario

Assume that you are a Java developer who wants to expose your available application as a Web service. This tutorial covers developing, deploying, and testing a temperature conversion application as a Web service in the Top Down (Contract First) and Bottom Up (Code First) approaches. In Web services terminology, Bottom Up (Code First) is used where the developer starts with the business logic, which is the code, and then develop and deploy the code as a Web service. The Top Down (Contract First) approach starts from the Web service descriptions, which is the WSDL, and then goes on to expose the Web service.

Only two Eclipse plugins are used in the process. The tutorial uses the Axis2 Web application deployed in your servlet container as the Web service deployment engine. Also, it is assumed that you know the basics of how to use Eclipse as your Java development environment, and therefore it does not cover areas such as creating a JAVA project in an Eclipse workspace and compiling and building a JAVA project in Eclipse.

Getting Started

These are the tools used in the tutorial.

1) Java Development Kit 1.4.2.x (Download)

2) Eclipse SDK 3.2.x (Download)

3) Apache Tomcat 4.1.x (Download)

4) Axis2 Web Application (Download)

5) Axis2 Eclipse Plugins (Download)

 

Now let us focus on the two plugins mentioned in the tutorial scenario.

1) Apache Axis2 Service Archive Generator Wizard – Eclipse Plugin

As a part of the Axis2 tool set, the service archive generator is an important tool that allows the generation of service archives (an "aar" file or a "jar" file) that can be deployed as a Web service to Axis2.

2) Apache Axis2 Code Generator Wizard - Eclipse Plugin

The Axis2 Code Generator Wizard is the other important tool that allows you to generate WSDL2Java and Java2WSDL code, which is the heart of developing and testing Web services.

To start developing Web services, you need to download, install the two plugins, and verify that the plugins are working properly. The installation of plugins into Eclipse is as simple as downloading the plugins from the Apache Axis2 download page and extracting them to the Eclipse plugins directory. You can download the two plugins from the Axis2 Tools Page. Refer to the installation instructions.

Other than the two plugins, we need the Axis2 runtime to deploy the developed Web services. We use the Axis2 Web Application which can be deployed in any popular servlet container. (You can download the Axis2 Web Application from the Axis2 Download page.) You have to just place it in the repository of the servlet container and run it. For example, if you are using Apache Tomcat, just copy the downloaded .war file, put it in the webapp folder, and start the servlet container.

 

PART 1 - The Bottom Up Approach in Web Services Development Using the Apache Axis2 Eclipse Plugin

  1. Start Eclipse SDK. First we need to create a JAVA project in Eclipse. (Follow the instruction on Eclipse SDK help.) You can give any name to the JAVA project, but for clarity, let us create a JAVA project called “TemperatureWebService”.

  2. In the Bottom Up Approach, we start with the service implementation and then build the deployable Web service component. We will be using the TemperatureConverter class definition as the logic for developing, deploying, and testing the Web service.

  3. Create a custom package ws.example appropriately and include the TemperatureConverter.java file in that package. Compile and build the project.

  4. package ws.example;
    
    /**
     * Temperature Converter Implementation Class
     */
    public class TemperatureConverter {
                    /**
                     * util method to convert celsius to fahrenheit
                     * @param cValue : double value of celsius
                     * @return calculated value of fahrenheit
                     */
                    public double c2fConvertion(double cValue) {
                                   return ((cValue * 9.0)/5.0 )+ 32.0;
                    }
    
                     /**
                     * util method to convert fahrenheit to celsius
                     * @param fValue : double value of fahrenheit
                     * @return calculated value of celsius
                     */
                    public double f2cConvertion(double fValue) {
                                   return ((fValue - 32.0) * 5.0) / 9.0;
                    }
    }

  5. After successfully building the project, we will create the service archive using the Axis2 Eclipse Service Archiver Plugin. On the File menu, click New and then click Other to access the Axis2 wizards. Else, you can press Ctrl+N.

  6. Note : At any given time, you can go back through the wizards, change the settings, and even start the wizards all over again to create a different Web service on another JAVA project available in your workspace.

  7. Select the Axis2 Service archiver and click Next. You will see the Axis2 service definition selection page.

  8. On this page, select the output location of the “TemperatureWebService” Java project that we previously developed. Here we point to the service implementation classes. If there is more than one class, you only have to point to the JAVA project build location. The wizard includes all the implementation files. To be on the safe side, if you are going to expose a complex project as a Web service, it's better to select the include .class files check box to omit unnecessary resource files that will increase the size of the deployable service archive that we are going to create.

  9. After selecting the correct output location, click Next.

  10. On this page, you can browse for the WSDL file. If you do not want to add a WSDL file to the service archive, select the Skip WSDL check box. Else you can select the Select WSDL check box, and specify the location of the WSDL file. We will skip the WSDL for the moment.

  11. Click Next.

  12. This page is to add the libraries. The library name (with the full path) can be specified by either typing it or browsing for it. Once the library name with the full path is entered, click Add to add the library to the list. The added libraries should be displayed in the Added libraries list. You can add as many external libraries as you wish.

    If any added library has to be removed, select it from the Added libraries list and click Remove.

  13. For this example, we do not need any external libraries added to the generated service. Therefore, click Next to proceed to the next step.

  14. This page is about the services.xml generation. If you have a custom services.xml file, you can select the services.xml file on this page by browsing for it or you can generate the service XML automatically. The browsing option is disabled when the Generate service xml automatically check box is selected.

  15. For this example, we use the automatically generated services.xml rather than a custom written one. Therefore, select the Generate service xml automatically check box, and then click Next.

  16. Note that this page will appear only if you selected to generate the services.xml automatically in the previous step. (If you selected a services.xml file, then you will be directed to the last page of the wizard.) After entering the correct service name and a valid fully qualified class name, load the existing methods of that class by clicking Load. If it is successfully loaded, you will see a table at the bottom of the page with the details of the loaded class. You can specify the methods to include in the services.xml by selecting the corresponding check boxes.

  17. Select the Search declared method only check box, to remove the inherited methods from the class. We do not need the inherited methods to be exposed and our only interest is in temperature conversion logic. Click Next to proceed to the last page of the wizard.

  18. On the last page of the wizard, specify the output file location and the output archive file name to complete the wizard. Note the location given in the example above. After specifying a name to identify the service that we will be deploying, we can directly guide the wizard to deploy this newly created Web service on any available Web service repository.

    Since we already have the Apache Axis2 Web application deployed on the servlet container, we can easily guide the wizard to deploy the service in the Axis2 Webapp (Axis2.war) inside Apache Tomcat. After deploying the Web application, the service repository will be available in the <TOMCAT_HOME>/webapp/axis2/WEB-INF/services folder.

  19. Click Finish to complete the steps in the wizard.

  20. Start the servlet container (in this case the Apache Tomcat), and navigate to http://localhost:8080/axis2 This will lead to the Axis2 Web application home page.

    To verify that our newly created service is available, navigate to the Services tab and view the available services. Your Temperature Converter service will be there.

Testing the Temperature Converter Service

Now that we have the service up and running, let's go ahead and test the created Temperature Converter service. This consists of two steps.

We have to generate the client code and invoke the Web service. For that we use the Axis2 Eclipse Codegen Plugin to create a WSDL from a Java source. For demonstration purposes of the Eclipse CodegAxis2 Eclipse Codegen Plugin we will do that in two steps. As the first step, we will create the WSDL, and then as the second step use that WSDL to generate code for the client.

Also note that you can skip the WSDL generation part since the deployed Web service is up and running. The WSDL will be generated when we click Temperature Converter under the available services in the Axis2 Web application. However, since the main aim of this tutorial is to introduce the Axis2 Eclipse Plugins, we are not going to use that option. We will use the Axis2 Eclipse Codegen Plugin to generate the WSDL for us.

Step 1 : Generate the WSDL from the Java source

  1. Start the Axis2 Eclipse Codegen Plugin by selecting it and clicking Next on the New wizard page.
  2. We are going to create the WSDL using the Axis2 Eclipse Codegen Plugin Java2wsdl option.

  3. On the first page, select the Generate a WSDL from a JAVA source and file option. Then, click Next.
  4. On this page, select the class to be exposed and the relevant .jar files /classes to be loaded as the classpath.

    Add the folder location of the class files of our project. After specifying the fully qualified class name click on the Add Folder button and add the location of the class files of your project. After the libraries have been set, click Test Class Loading to test whether the class is loadable.

  5. Test the class loading by clicking Test Class Loading
  6. Unless the class loading is successful, the Next button will not be enabled. As we did on the service archive generation, we have to enter the fully qualified class name as the service class. Then select the project output folder.

  7. Once the class loading is successful, click Next. The page below will appear.
  8. This page allows the parameters to be modified by setting the options for the generator. Note: If you customize these parameters (instead of the default), you will be generating a different Web service descriptor with different parameters than what we have generated by using the service archive wizard.

    NOTE : If you are using the 1.3 version of the Axis2 Eclipse Plugin you need to change the shema target namespace to http://example.ws to comply it with the Axis2 1.3 version. Please drop the trailing /xsd part of the shema target namespace. All other earlier version than 1.3 do not need this change.

  9. We will accept all the default values. Click Next.
  10. Here you can specify the output file location by typing or browsing for it using the Browse button. You have the option of browsing only Eclipse workspace projects by selecting the Add the source to a project on current eclipse workspace option. Else you have the option of saving the codegen results to the file system.
  11. Once the output file location and the output WSDL file name is added, click Finish to complete generation.
  12. A message appears informing you that all the operations were completed successfully. You have successfully completed the Java2WSDL code generation and created the WSDL of the Temperature Converter Service.

 

Step 2 : Generate code and invoke the service

In this step, we have to generate code, which represents the client side stubs, using the Axis2 Eclipse Codegen Plugin and test the deployed Temperature Converter Service by using the WSDL file generated in Step 1.

To create the client stub using the Axis2 Eclipse Codegen Plugin wsdl2java option:

  1. Start the Axis2 Eclipse Codegen Plugin by selecting it and clicking Next on the new wizard page.
  2. Create the client stub using the Axis2 Eclipse Codegen Plugin wsdl2java option by selecting the Generate Java source code from WSDL file option. Click Next.
  3. Select the previously generated WSDL location by browsing for it. Click Next.
  4. Once the WSDL file is selected, the next page will take you to the page from where the codegen options are to be selected. By far this is the most important page in this wizard. This page determines the characteristics of the code being generated.

    If this is the first time you invoked the wizard, you will see that the most common options are set by default. Advanced users will find it very easy to turn the knobs using these options. You can select Custom from the Select Codegen Options list and then change/edit the fields that you need. We are going to create stubs accepting the default values.

  5. Accept the default settings and click Next.
  6. On the final page of the wizard, you can specify the output file path by typing or browsing for it using the Browse button. You have the option of browsing only Eclipse workspace projects by selecting the Add the source to a project on current eclipse workspace option. Else you have the option to save the codegen results to the file system.

  7. Click Add the source to a project on current eclipse workspace and select the project that you have created earlier.
  8. Select the Add codegen jars to the codegen resulted project check box so that we can easily compile the code without worrying about adding Axis2 libraries to the JAVA project classpath.

  9. Click Finish. A message appears informing you that you have successfully completed the WSDL2Java code generation.
  10. The client stub files will be generated in the project.
  11. In order to compile the code we need to add the generated libraries to the project library path. You can add the .jar files in the lib directory by navigating the project properties of the Java project.

    After adding the required libraries, you will be able to clean build the project without any errors.

     

  12. Now we will write the Client, and use this client to invoke the Web service deployed earlier. Add the following TemperatureConverterServiceClient. java class to the project,
  13. package ws.example;
    
    public class TemperatureConverterServiceClient {
        public static void main(String[] args) {
            TemperatureConverterStub stub;
            try {
                double c_value = 32;
                stub = new TemperatureConverterStub
               ("http://localhost:8080/axis2/services/TemperatureConverter");
                TemperatureConverterStub.C2FConvertion c2f = new TemperatureConverterStub.C2FConvertion();
                c2f.setCValue(c_value); 
                TemperatureConverterStub.C2FConvertionResponse res = stub.c2FConvertion(c2f);  
                System.out.println("C Value : "+c_value+ "\tResult : " +res.get_return());
                TemperatureConverterStub.F2CConvertion f2c = new TemperatureConverterStub.F2CConvertion(); 
                f2c.setFValue(res.get_return());
    
                TemperatureConverterStub.F2CConvertionResponse res1 = stub.f2CConvertion(f2c);
                System.out.println("F Value : "+res.get_return()+ "\tResult : " +res1.get_return());
           } catch (Exception e) {
               e.printStackTrace();
           }
        }
    }

    NOTE : If you are using an early version of the Axis2 Eclipse Plugins than 1.3, you may have to change the client according to the stubs that have been generated. Previous verisons of Axis2 did generate multiple stubs for each port type of the wsdl and you may use the example client given below for those versions.

    package ws.example;
    
    import java.rmi.RemoteException;
    
    import org.apache.axis2.AxisFault;
    
    public class TemperatureConverterServiceClient {
    
      public static void main(String[] args) {
        TemperatureConverterTemperatureConverterSOAP11PortStub stub;
        try {
          double c_value = 32;
          stub = new TemperatureConverterTemperatureConverterSOAP11PortStub
    	 		("http://localhost:8080/axis2/services/TemperatureConverter");
          TemperatureConverterTemperatureConverterSOAP11PortStub.C2FConvertion c2f 
          	= new TemperatureConverterTemperatureConverterSOAP11PortStub.C2FConvertion();
          c2f.setCValue(c_value);
          TemperatureConverterTemperatureConverterSOAP11PortStub.C2FConvertionResponse res 
            = stub.c2FConvertion(c2f);
           System.out.println("C Value : "+c_value+ "\tResult : " +res.get_return());
           TemperatureConverterTemperatureConverterSOAP11PortStub.F2CConvertion f2c 
    	 = new TemperatureConverterTemperatureConverterSOAP11PortStub.F2CConvertion();
            f2c.setFValue(res.get_return());
    
            TemperatureConverterTemperatureConverterSOAP11PortStub.F2CConvertionResponse res1 
    	 = stub.f2CConvertion(f2c);
            System.out.println("F Value : "+res.get_return()+ "\tResult : " +res1.get_return());
            } catch (AxisFault e) {
            	e.printStackTrace();
            } catch (RemoteException e) {
                    e.printStackTrace();
            }
      }
    }

    After adding the TemperatureConverterServiceClient. java class to the project, compile, and build the project. After that you can run the client to test the service. If you have successfully carried out all the steps, the temperature converter service will be invoked and the results of the service will be displayed on the command line output.

    Note: The stub assumes that you run Tomcat on 8080 (if not, change the stub URL and re-run the client).

Sample Project Src Download

Conclusion

Web service creation, deployment, and testing is no more a time consuming task. With the Axis2 Eclipse Plugins you can create, deploy, and test your Web services using a wizard. The time to write, deploy, and test a Web service is reduced to a minimum with the introduction of these tools.

PART 2 - Top Down Approach

 

See also..

How to create a web service using WSAS tools in 3 steps

How to create a web service client using WSAS tools in 3 steps

How to debug a web service using WSAS tools in 3 steps

How to edit a web service while testing it using WSAS tools in 3 steps

References

Apache Axis2 - http://ws.apache.org/axis2

Apache Axis2 Tools - http://ws.apache.org/axis2/tools/index.html

Eclipse.org - http://ws.apache.org/axis2/tools/index.html

Eclipse Plugins - http://www.eclipseplugincentral.com/

Author

Lahiru Sandakith P.G. WSO2, Inc. sandakith at wso2 dot com

hocuspocus's picture

Exception upon "execute the operation client"

Hi Firstly I really want to compliment you on a very comprehensive and generally AWESOME tutorial, thank you very much for it! However upon trying to run the WS Client everything seems to go well until when the "_operationClient.execute(true);" statement in the "TemperatureConverterStub" gets called?  This then results in the following stack trace: org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method c2fConvertion     at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)     at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)     at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)     at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)     at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)     at ws.example.TemperatureConverterStub.c2FConvertion(TemperatureConverterStub.java:440)     at ws.example.TemperatureConverterServiceClient.main(TemperatureConverterServiceClient.java:14) I have  verified that all the possible .jar files are indeed added to the Libraries?  Thanks Your feedback regarding this will be greatly appreciated. Herman
sandakith's picture

RE : Exception upon "execute the operation client"

Hi Herman, Thanks for the complements. Actually what really useful infomation is the total stack trace with the cause by clause to id the actual issue. If you could attach the full trace that would be handy for us to debug where it went wrong. Thanks Sandakith
laura's picture

Hi Lahiru,I am having the

Hi Lahiru, I am having the same problem as Herman, and unfortunately there is no more stack trace than what he posted.  Is there a log where we might find more details, or maybe one of the objects that we can inspect to see what went wrong?   I have stepped through the code in debug mode, and it appears that the exception is not thrown when the fault occurs, but rather in OutInAxisOperation.handleResponse() when a check for the fault is made.  I am posting (what I think is the) relevant code from handleResponse():   protected void handleResponse(MessageContext responseMessageContext) throws AxisFault{        ....         SOAPEnvelope resenvelope = responseMessageContext.getEnvelope();         if (resenvelope != null) {             AxisEngine.receive(responseMessageContext);             if (responseMessageContext.getReplyTo() != null) {                 sc.setTargetEPR(responseMessageContext.getReplyTo());             }             if (resenvelope.getBody().hasFault()||responseMessageContext.isProcessingFault()) {                 if (options.isExceptionToBeThrownOnSOAPFault()) {                     // does the SOAPFault has a detail element for Excpetion                     throw Utils.getInboundFaultFromMessageContext(responseMessageContext);                 }             }         }     } I would love to put a breakpoint in SOAPBody.addFault() to see what caused the fault, but I'm afraid I don't have the source code for it (I have attached the source code for the JDK and for Axis2, but either I did this wrong or I need to download the SOAP source from somewhere else).   I am using Fedora Core 7, Jave 1.6.0_03, Tomcat 6, Eclipse 3.2.0, and Axis2 1.3.  At the bottom of this post is my generated WSDL. Thanks for all of the time you put into this -- both the tutorial and your answers to the comments have helped me get much farther than I could have on my own. -Laura ----- <update -- removed WSDL because of formatting issues>
laura's picture

Issue Resolved

A coworker helped me find the problem:   $tail $CATALINA_HOME/logs/catalina.out   2007-12-06 13:41:01,734 ERROR org.apache.axis2.rpc.receivers.RPCMessageReceiver - Exception occurred while trying to invoke service method c2fConvertion org.apache.axis2.AxisFault: namespace mismatch require http://example.ws/xsd found http://example.ws/ ...   So all I did was replace all occurences in the stub of http://example.ws/ with http://example.ws/xsd, and now it works.  This seems strange to me since I am using Axis2 1.3, and I thought I was supposed to remove the xsd for that version.   -Laura
sandakith's picture

RE : Issue Resolved

Hi , Great that you able to track down the issue and point whats wrong also. Seems the axis2 has gone back to the earlier state that used with the namespaces. I ll check it arround and resolve the issue. Thanks for the info Lahiru Sandakith.
nilanchanaka's picture

Problem in validating services.xml

I have make a service and automatically generating service.xml but when I go to depploy the service there is a validation error in service.xml the generated code is <serviceGroup><service name="NameService" >    <description>        Please Type your service description here    </description>    <messageReceivers>        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"        class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />    </messageReceivers>     <parameter name="ServiceClass" locked="false">service.NameService</parameter>  <excludeOperations>        <operation>getStrings2</operation>        <operation>getStrings</operation>        <operation>setnames</operation>        <operation>getStrings4</operation>        <operation>getStrings5</operation>        <operation>getNames</operation>        <operation>getStrings3</operation>  </excludeOperations> </service> </serviceGroup> I think the problem is on <excludeOperations>        <operation>getStrings2</operation>        <operation>getStrings</operation>        <operation>setnames</operation>        <operation>getStrings4</operation>        <operation>getStrings5</operation>        <operation>getNames</operation>        <operation>getStrings3</operation>  </excludeOperations> tags. What is the purpose of operation tags.When i delete that and create the archive it generated.Is it OK. how i overcome this validation error with operation tags.thank you  
sandakith's picture

RE : Problem in validating services.xml

seems you have posted twise, please look in to the earlier post reply Thanks Lahiru Sandakith
nilanchanaka's picture

Thanks for repply

Thanks lahiru for the imediate repply I have deleted <excludeOperations>        <operation>getStrings2</operation>        <operation>getStrings</operation>        <operation>setnames</operation>        <operation>getStrings4</operation>        <operation>getStrings5</operation>        <operation>getNames</operation>        <operation>getStrings3</operation>  </excludeOperations> tags.Then can validate and deploy.Is there is any effect to the operations because of this.And can you tell more about JIRA.Thanks
nilanchanaka's picture

Validation Error in service.xml

I write a service and try to deploy it.I generate the service.xml file automatically.But it gives an error when validating.My services.xml is <serviceGroup><service name="NameService" >    <description>        Please Type your service description here    </description>    <messageReceivers>        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"        class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />         <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"         class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />    </messageReceivers>     <parameter name="ServiceClass" locked="false">service.NameService</parameter>  <excludeOperations>        <operation>getStrings2</operation>        <operation>getStrings</operation>        <operation>setnames</operation>        <operation>getStrings4</operation>        <operation>getStrings5</operation>        <operation>getNames</operation>        <operation>getStrings3</operation>  </excludeOperations> </service> </serviceGroup> I think the problem with operation tags that have created.Whats the purpose of operatin tags.when i delete operatin tags it validate properly.But i want to know how to validate it properly with operation tags.Thank you
sandakith's picture

RE : Validation Error in service.xml

Hi did you remove the whole set of operations list or did you remove the excludeOperations tag also. From the first look of it this is seems to be a bug in the validation xsl that we are passing against it. I ll check on to it, thanks. We would be delighted if you can open a JIRA on (http://issues.apache.org/jira/browse/AXIS2) against ide tools, and you can then track it. Thanks Lahiru Sandakith
nilanchanaka's picture

Thanks for repply

Thanks lahiru for the imediate repply I have deleted <excludeOperations>        <operation>getStrings2</operation>        <operation>getStrings</operation>        <operation>setnames</operation>        <operation>getStrings4</operation>        <operation>getStrings5</operation>        <operation>getNames</operation>        <operation>getStrings3</operation>  </excludeOperations> tags.Then can validate and deploy.Is there is any effect to the operations because of this.And can you tell more about JIRA.Thanks
sandakith's picture

RE : Thanks for repply

Yes there is an affect that when you include that list of operations those list will be ignored from the web services expoded list. Anyway what you have is an velid services.xml so the plugin should velidate it. As you have asked JIRA (http://issues.apache.org/jira/browse/AXIS2) is the issue tracking system that Apache Software foundation most projects issues are reported. Its he way to get the user interaction. Anyone can report the issues that they see or face in this systems so that it will be not missed, and surely if you have reported sooner or later it will be bring on to a developpers attention who are looking at the context that you are refering and put you in the right way. Thanks Lahiru Sandakith.
nilanchanaka's picture

Plz help

I have post above bug for http://issues.apache.org/jira/browse/AXIS2 under tool bugs.But did not get a repply.If you can plz tell me is it a bug or problem in my code.Thank you
nilanchanaka's picture

Axis 2 IDEA pevious virsions dont validate service.xml

The pevious virsions of  axis2 Intelig IDEA plugins do not validate services.xml.But in IDEA 1.3 has validation facility before create the archive.But automatically generated code do not validate.so could not deploy the service.I mention above what the problem is.Is there any sollution for solve this.Thanks
sandakith's picture

RE : Axis 2 IDEA pevious virsions dont validate service.xml

Hi I looked in to this issue and found these. First of all the schema for services.xml validation is located in the ./kernel/resources/services.xsd (i.e. inside your axis2-kernel*.jar). This was used in the process of the validating the services.xml from the IDE. These are the chunks that are related for this issue,    <xs:element name="excludeOperations">         <xs:complexType>             <xs:sequence>                 <xs:element ref="operation"/>             </xs:sequence>         </xs:complexType>     </xs:element>     <xs:element name="operation">         <xs:complexType mixed="true">             <xs:choice minOccurs="0" maxOccurs="unbounded">                 <xs:element ref="messageReceiver"/>                 <xs:element ref="module"/>                 <xs:element ref="parameter"/>                 <xs:element ref="actionMapping"/>                 <xs:element ref="faultActionMapping"/>                 <xs:element ref="message"/>                 <xs:element ref="outputActionMapping"/>             </xs:choice>             <xs:attribute name="mep" type="xs:anyURI"/>             <xs:attribute name="name" type="xs:NCName"/>             <xs:attribute name="qname" type="xs:NCName"/>         </xs:complexType>     </xs:element> seems like its not complient with the generated services.xml because of this. from the look of it it seems like we need name attribute rather than a string content of the generated services.xml that you have put forward. Again I also think the for excludeOperations the mep and the qname also should be optional. I will fix this after I send this query into the axis2 dev list. thanks Lahiru Sandakith
sandakith's picture

RE : Axis 2 IDEA pevious virsions dont validate service.xml

Hi I have sent a mail to the axis2-dev requesting the aproval of the change that we need to done to the services.xsd. If you miss that here is the change that you need to do.   <xs:element name="excludeOperations">         <xs:complexType>             <xs:sequence>                 <xs:element name="operation" type="xs:string" />             </xs:sequence>         </xs:complexType>     </xs:element> Thanks Lahiru Sandakith.
nilanchanaka's picture

Thanks For fix the problem

Thank you lahiru ayya for your work. But still i do not get the location of services.xsd file.Can i change the content of it and make as work it properly or did you relase a new version of plugin in near future.Can you tell me where is the services.xsd file locate and can I fix that problem as u suggest
sandakith's picture

RE : Thanks For fix the problem

Hi Yes, it will be included in the next release of the plugin, but you can also fix this in your 1.3 plugin download. I believe that you are using the Axis2 idea 1.3 plugin. If so you can locate the services.xsd file under the classes/resources. So what you want to do is unpack the plugin and fix the issue and repack it again and restart idea with the new plugin as I remember, maybe there are some temp sandbox location that you might also be needed to clear form the idea side. But it sould work in inteneded way after a restart. Thanks Lahiru Sandakith.
nilanchanaka's picture

Prolam remains

I have changed the services.xsd file and save it and restart the IDEA but still the validation problem remains.Can you tell me i have to only change classes/resources location.When will be the next version of IDEA plugin will released.Thank you
sandakith's picture

RE : Prolam remains

I guess now it seems to be something because of idea persisting resources. I will check more on this and how that we can get away from the cached resources. Lahiru Sandakith.
sandakith's picture

update on this

Hi, whats the update on this. guess you were able to resolve this issue. Thanks Sandakith
ktzanet's picture

Question concerning web services

Hello, I read your tutorial on http://www.wso2.org/library/1986 about how to run a web service. The web service retrieves a table from a database and sends it back to the cilent. Until this point everything works fine. When the database becomes more complicated there is an error. For example I have a table called Device and a table called Location. These 2 tables are related together (1 device has 1 location while in 1 location there may be many devices).When i retrieve  the table Device from the database I get alla the data from that table AND in every row there is a Location object that refer's to each device. The location object is retrieved correctly from the database but when I try to send it back to the client I get the following message: org.apache.axis2.AxisFault:  at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java :434) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:373) at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:294) at gr.ntua.netmode.service.TopologyServiceTopologyServiceSOAP12Port_httpStub. getDevices(TopologyServiceTopologyServiceSOAP12Port_httpStub.java:786) at Client.print_Devices(Client.java:288) at Client.main(Client.java:47) This is my service code: public WSDevice[] getDevices() {         List<Device> n;         Transaction tx = null;         try {             SessionFactory sessionFactory = new                                 Configuration().configure().buildSessionFactory();             Session session = sessionFactory.openSession();             tx = session.beginTransaction();             n = (List<Device>) session.createQuery                                 ("from Device as device").list();                         devices = new WSDevice[n.size()];             for (int i = 0; i < n.size(); i++) {                 WSDevice wsDevice = new WSDevice();                                 wsDevice.setNode_id(n.get(i).getNode_id());                 wsDevice.setName(n.get(i).getName());                 //wsDevice.setDomain(n.get(i).getDomain());                                 wsDevice.setNickname(n.get (i).getNickname());                 wsDevice.setVendor(n.get(i).getVendor());                 wsDevice.setModel(n.get(i).getModel());                 wsDevice.setOs_name(n.get(i).getOs_name());                 wsDevice.setOs_version(n.get(i).getOs_version());                 wsDevice.setMember_id (n.get(i).getMember_id());                 wsDevice.setSet_of_ifce(n.get(i).getSet_of_ifce());                 wsDevice.setDomain_id(n.get(i).getDomain_id());                 wsDevice.setDescription(n.get(i).getDescription());                 wsDevice.setStatus(n.get(i).getStatus());                 wsDevice.setIp_address(n.get (i).getIp_address());                 wsDevice.setNickname(n.get(i).getNickname());                 System.out.println(wsDevice.getDescription());                 System.out.println(wsDevice.getLocation().getCountry());                 wsDevice.setLocation(n.get(i).getLocation());                 devices[i]=wsDevice;             }             tx.commit();             session.flush();             session.close ();                     } catch (HibernateException e) {             e.printStackTrace();             if (tx != null && tx.isActive())                 tx.rollback();         }         return devices;     } and this is my client code: public static void print_Devices() {     try {         TopologyServiceTopologyServiceSOAP12Port_httpStub stub = new TopologyServiceTopologyServiceSOAP12Port_httpStub();         GetDevicesResponse response = stub.getDevices();         WSDevice[] devices = response.get_return();         for (int i=0; i<devices.length; i++) {             System.out.println(devices[i].getLocation().getCity());             System.out.println(devices[i].getName());             System.out.println(devices[i].getDescription());                System.out.println();         }             } catch (RemoteException e) {         // TODO Auto-generated catch block         e.printStackTrace();     } } Thank you
hellokiran's picture

Axis2 Service Archiver plugin error

Hi Lahiru, I added Axis2 Service Archiver plugin in my eclipse and when I try to access, it is opening up window with out any text boxes/ select boxes to enter. When i check the eclipse log file i see this exception in it..can you please let me know as to what is missing. !ENTRY org.eclipse.ui 4 0 2007-10-31 14:35:23.401 !MESSAGE org/apache/axis2/databinding/ADBBean !STACK 0 java.lang.NoClassDefFoundError: org/apache/axis2/databinding/ADBBean at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$100(Unknown Source) Any help is greatly appreciated. Thanks, Kiran
sandakith's picture

RE : Axis2 Service Archiver plugin error

Hi , Please tell us what is the version that you are using as the Axis 2 Service Archiver Plugin. Also with the Eclipse flavour and the java flavour that you are using. We will try to nail down the issue. There are no issued with the version that mentioned version in the tutorial.  Thanks Lahiru
hellokiran's picture

Hi Lahiru, Thanks for your

Hi Lahiru, Thanks for your reply. The plugin version i am using is 1.3 and MyEclipse version is 5.5(Eclipse 3.2.2). Thanks Kiran
sandakith's picture

RE : Hi Lahiru, Thanks for your

Hi Kiran, We have not tested the axis2 plugins against MyEclipse, As you have explained that your MyEclipse version has Eclipse Core version 3.2.x core, the axis2 plugins will not have any problem with Eclipse Core 3.2.x. It resolve all dependencies at the initiatin and 1.3 version was tested on 3.2.x But what we really need to find out is wether the axis2 plugins did conflict with some other plugin in the plugin initialtion when its inside the MyEclipse other custon plugin set. Can you please send forward any other log traces that if there at the eclipse initiation, Also is there a custom JDK inside MyEclipse or are you pointing it to the Sun JDK if so which version. thanks Lahiru
jollyca's picture

Same problem...

I'm experiencing the exact same problem now with the Service Archiver plugin (1.3.0)  and Eclipse 3.3.1.1. The error is java.lang.NoClassDefFoundError: org/apache/axis2/databinding/ADBBean I have posted the bug in the Axis2 issue tracker also. Thank you for your time...   PS: ...oh, and I deleted the axis2 directories from the .plugins, too.
sandakith's picture

Are you behind a proxy?

can you please tell us that whether you are behind a proxy ? Thanks Lahiru Sandakith.
kde85.hotmail.com's picture

great info ..thanks

Hi, I found your blog on google and read a few of your other posts. I just added you to my Google News Reader. Keep up the good work. Look forward to reading more from you in the future. Regards, Jane Antique Signs | Children Bible Stories
buddhikat's picture

Be carefull with the default jdk comes ubuntu

    this tutorial was really good, and worked fine. But it fails if the eclipse is using the default jdk that comes with ubuntu. Instead, if it uses the user installed jdk this works without causing any difficulties.   thanks and regards , buddhika  
kvkk's picture

Getting null pointer exception in bottom up approach

Thanks for detailed tutorial. I tried the enitre process with my own service. Service was deployed in container. But when i tried to test the service I am getting an error Here is trace org.apache.axis2.AxisFault: java.lang.NullPointerException at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486) at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163) at com.wf.ws.MathServiceStub.getIntResult(MathServiceStub.java:196) at com.wf.ws.MathServicesClient.main(MathServicesClient.java:22) I have no clue on what is happening
sandakith's picture

RE : Getting null pointer exception in bottom up approach

Hi , From the given infomation what I can say only is that, the responce from the server was a fault. Is it possible to forward us the method signatures of the your custon service. There are some limitations with respect to Axis2 POJO scenario when it method signatures conatains  non java bean types. Thanks Lahiru Sandakith.
zet4080's picture

Hi! I've got exactly the

Hi! I've got exactly the same problem. Method is: public boolean createLuceneIndex() throws IOException {   return true; } Stacktrace is: Exception in thread "main" org.apache.axis2.AxisFault: java.lang.NullPointerException  at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)  at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)  at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)  at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)  at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)  at com.proalpha.java.pafinder.webservice.query.lucene.QueryLuceneStub.createLuceneIndex(QueryLuceneStub.java:478)  at com.proalpha.java.pafinder.webservice.query.lucene.QueryLuceneClient.main(QueryLuceneClient.java:17) I really removed everything. but still get the error!   Thanks in advance! Regards, Jochen    
xchen9's picture

Problem in generated wsdl with complex type, please help!

I have gone through the part I of the tutorial and things work fine for simple web service, such as return type is just a String. But when I change the return type to be a Java class that just has bunch of getters and setters, the generated wsdl has some problems: Type reference http://dto.is.unl.edu/xsd#SSOTicketResponse is unresolved. In the Java method, I am trying to catch java.lang.Exception, then recreate a my own exception object that is an extension of java.lang.Exception. In the generated wsdl, I have another error: Type reference http://lang.java/xsd#Exception is unresolved. It looks like that the generated wsdl namespaces are wrong. Please advice. Thanks.
sandakith's picture

RE : Problem in generated wsdl with complex type, please help

Hi , Its really nice to hear that you went through, I have made some updated to the tutorial, Thanks for your feedback. Axis2 JAVA2WSDL will handle all the simple types, simple types arrays and Java Bean type objects. If you can provide us some info we can debug it and see whats happening with your bean. About the custom exception AFAIK whatever the exception that throws from the bussiness logic from the service it will be wrapped in a AxisFault and return to the client and calient should handle check it and handle it. Thanks Lahiru Sandakith.
xchen9's picture

RE : Problem in generated wsdl with complex type, please help

Hi, thanks for your prompt reply. Here are the code for the service class: public class SSOWebService {     private static Logger myLogger = Logger.getLogger(SSOWebService.class.getName());     private String sisDbOwner = null;     private String sisJndiDataSource = null;     private String jndiContextName = null;     /**      * This method is used to get a ticket from the Web Service. The ticket can      * be passed to other applications that want to check whether or not a user      * has logged into some trusted applications.      *      * @param serviceId The ID for the service that requests the ticket      * @param servicePassword The password for the service that requests      *        the ticket      * @param userId The userId the ticket is requestd for      * @return SSOTicketResponse      */     public SSOTicketResponse getTicket(SSOTicketRequest r){         TicketDao dao = new TicketDao(jndiContextName, sisJndiDataSource,                 sisDbOwner,this.getClass().getName());         SSOTicketResponse tr = new SSOTicketResponse();         String ticket = null;         //*         try {             ticket = dao.getTicket(r.getServiceId(),r.getServicePassword(),                     r.getUserId());         } catch (Exception e) {             myLogger.warn("Get SSO Ticket problem: " + e.getMessage());             String message = e.getMessage();             SQLException se = null;             int errorCode = -1;             if(e instanceof SQLException){                 se = (SQLException)e;                 errorCode = se.getErrorCode();             }             SSOTicketException tx = null;             if(message != null){                 tx = new SSOTicketException(message);             }             if(errorCode != -1){                 tx.setExceptionCode(errorCode);             }             tr.setException(tx);         }         //*/         tr.setServiceId(r.getServiceId());         tr.setUserId(r.getUserId());         tr.setTicket(ticket);         return tr;     } } ---------------------- The following is the SSOTicketResponse class: /*  * Created on Aug 2, 2007  * By xchen3  *  */ /**  * Class comments go here  *  *  *<pre>  * Date Aug 2, 2007  * </pre>  *  * @author xchen3  *  */ package edu.unl.is.sso.dto; public class SSOTicketResponse {     /**      * Tells if there is a valid ID in the response.      */     private boolean valid = false;     /**      * The actual ticket.      */     private String ticket = null;     /**      * The user ID associated with the ticket.      */     private String userId = null;     /**      * The service ID associated with the ticket.      */     private String serviceId = null;     /**      * @return the serviceId      */     private SSOTicketException exception = null;         public String getServiceId() {         return serviceId;     }     /**      * @param serviceId the serviceId to set      */     public void setServiceId(String serviceId) {         this.serviceId = serviceId;     }     /**      * @return the ticket      */     public String getTicket() {         return ticket;     }     /**      * @param ticket the ticket to set      */     public void setTicket(String ticket) {         this.ticket = ticket;     }     /**      * @return the userId      */     public String getUserId() {         return userId;     }     /**      * @param userId the userId to set      */     public void setUserId(String userId) {         this.userId = userId;     }     /**      * @return the valid      */     public boolean isValid() {         return valid;     }     /**      * @param valid the valid to set      */     public void setValid(boolean valid) {         this.valid = valid;     }     /**      * @return the exception      */     public SSOTicketException getException() {         return exception;     }     /**      * @param exception the exception to set      */     public void setException(SSOTicketException exception) {         this.exception = exception;     }     } ----------------------------------------- Below is the exception class public class SSOTicketException extends Exception{         private String exceptionMessage = null;     private int exceptionCode = -1;     public SSOTicketException(){         super();     }     public SSOTicketException(String message){         super(message);     }     public void setExceptionMessage(String m){         exceptionMessage = m;     }     public String getExceptionMessage(){         return exceptionMessage;     }     /**      * @return the exceptionCode      */     public int getExceptionCode() {         return exceptionCode;     }     /**      * @param exceptionCode the exceptionCode to set      */     public void setExceptionCode(int exceptionCode) {         this.exceptionCode = exceptionCode;     }     }
amanjsingh's picture

Tough compilation problem...

I have done everything till the end, but in the end, when i am trying to compile the client side...it gives this error -   xception in thread "main" java.lang.Error: Unresolved compilation problems:     TemperatureConverterTemperatureConverterSOAP11PortStub cannot be resolved to a type     TemperatureConverterTemperatureConverterSOAP11PortStub cannot be resolved to a type     TemperatureConverterTemperatureConverterSOAP11PortStub cannot be resolved to a type     TemperatureConverterTemperatureConverterSOAP11PortStub cannot be resolved to a type     TemperatureConverterTemperatureConverterSOAP11PortStub cannot be resolved to a type     TemperatureConverterTemperatureConverterSOAP11PortStub cannot be resolved to a type     TemperatureConverterTemperatureConverterSOAP11PortStub cannot be resolved to a type     TemperatureConverterTemperatureConverterSOAP11PortStub cannot be resolved to a type     AxisFault cannot be resolved to a type     e cannot be resolved     at ws.example.TemperatureConverterServiceClient.main(TemperatureConverterServiceClient.java:10) Any ideas please. I will be glad.
sandakith's picture

RE : Tough compilation problem...

Hi , I have update the content of the tutorial. You have used the latest Axis2 Eclipse Plugins, Please revisit the updated content and you will be able to get through. Thanks Lahiru Sandakith.
amanjsingh's picture

Sir, the error seems to be persistent

I restarted the Tomcat server and the error I am getting on running the client is  -   Exception in thread "main" java.lang.Error: Unresolved compilation problems:     The method setCValue(double) is undefined for the type TemperatureConverterStub.C2FConvertion     The method setFValue(double) is undefined for the type TemperatureConverterStub.F2CConvertion     at ws.example.TemperatureConverterServiceClient.main(TemperatureConverterServiceClient.java:11) Could you help me on this please? I will be more than glad.
amanjsingh's picture

Thanks a lot

I figured out that the function was setParam0(double). Strange. Somehow I am still getting the following error -       org.apache cannot be resolved to a type     org.apache cannot be resolved to a type     org.apache cannot be resolved to a type     at ws.example.TemperatureConverterStub.<init>(TemperatureConverterStub.java:17)     at ws.example.TemperatureConverterServiceClient.main(TemperatureConverterServiceClient.java:8)   My library files are in lib folder within the Eclipse Project . I appreciate your helping me. thanks AJ  
sandakith's picture

RE : Thanks a lot

Hi, Seems you are using Axis2 1.1, AFAIK this was fixed in both Axis2 1.2 and 1.3 versions. Thanks Lahiru Sandakith.
amanjsingh's picture

Sir. I am using Axis2 1.3

Sorry for the late reply but I downloaded new Axis2 1.3 (latest) version and installed it and tried again. It gives the same error. Perhaps, it is not registering the Libraries? This is what I feel, although library files are in the lib folder within the project.
sandakith's picture

RE : the error seems to be persistent

Hi, As the problem seems to be poersistence with you, I dought that you may have not followed the same convention of the POJO class with the method signatures. see that the erroe message is method not exist. Could you please check what will be the appropriate method in the TemperatureConverterStub.C2FConvertion inner calss and ajust your custom client Thanks Lahiru Sandakith  
amanjsingh's picture

Thanks a lot but...

I am getting this error, I know this can be really stupid (of me) ...       TemperatureConverterStub cannot be resolved to a type     TemperatureConverterStub cannot be resolved to a type     TemperatureConverterStub cannot be resolved to a type     TemperatureConverterStub cannot be resolved to a type     TemperatureConverterStub cannot be resolved to a type     TemperatureConverterStub cannot be resolved to a type at ws.example.TemperatureConverterServiceClient.main(TemperatureConverterServiceClient.java:5)   Any clues please? Thanks AJ
tbag's picture

Namespace mismatch

I'm going through the tutorial, using Axis2 1.3.

I changed the Serviceclient class, as mentioned earlier. But when I'm trying to compile I get the following error message:

 

log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
org.apache.axis2.AxisFault: namespace mismatch require http://example.ws found http://example.ws/xsd
    at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)

 

This may look like wrong Data  in the Codegen Wizzard( Java to wsdl options), but I didn't change the defaults.

 

Also I can access the services using Soap UI and everything works as expected. But Eclipse doesn't compile my files.

 

Thanks

sandakith's picture

RE : Namespace mismatch

Hi

This was a issue reported against the latest Axis2 Eclipse Plugins and we have fixed the issue, see http://issues.apache.org/jira/browse/AXIS2-3145

Lahiru

icfantv's picture

Namespace mismatch

tbag-

I've not found the root cause of this but I suspect it's a code generation issue of the Stub class from the WSDL.  If you do a global search and replace in the Stub class looking for "http://example.ws/xsd" and change to "http://example.ws" (I think there were 20-ish such replacements) and then recompile/run the service client it should work.

Again, I'm super new to AXIS so I don't know why the wrong namespace is being used in the code generation but it definately appears to be a bug.

Incidentally, there were some other bugs I noticed at least w/ my test:

  1. AXIS Jar files were not copied over w/ the click of the checkbox.  I had to click the second checkbox as well and tell Eclipse where to find the AXIS_HOME directory - then all the JAR files were copied over.
  2. The name of the Stub class in the example is not the same as the name of Stub class generated by my codegen plugin.

That's all I remember.  Again, I was able to work through the issues on my own and got the example running.

--adam

name's picture

Help please, If Complex Web Services Type.

 Hi

If Complex Web Services Type , How i do about deploying web service by Apache Axis2 Eclipse Plugins-Part1? 

Thanks

abrockjohn.gmail.com's picture

summa

The new WSO2 Business Process Server (WSO2 BPS) is very useful to the business process the WSO2 carbon platform gives security for the business processes it helpful for businees improvements for further growth.. Internet Specialist
sandakith's picture

RE : Help please, If Complex Web Services Type.

Hi

The assumption is it will work as same as the simple types but under the Axis2 Codegen constrains. Go ahead and try it out if you have any ques' lets discuss. Have a look at the http://ws.apache.org/axis2/1_0/adb/adb-howto.html for the Axis2 databinging that will help you to understand what happens inside the codegen with types.

Lahiru