使用Axis2创建Web服务的步骤 – 客户端代码

我正在尝试创建一个Web服务,我的交易工具是:

**

Axis2,Eclipse,Tomcat,Ant

**

我需要从Code创建一个Web服务,即编写一个基本的java类,它将具有在WSDL中声明的方法。 然后使用java2WSDL.sh创建我的WSDL。

那么,这种方法是否正确:

  1. 用实际的业务逻辑编写我的Java类
package packageNamel; public class Hello{ public void World(String name) { SOP("Hello" + name); } } 
  1. 现在,当我将此Hello.java传递给java2WSDL.sh时,这将为我提供WSDL。
  2. 最后,我将编写services.xml文件,并使用以下dir结构创建Hello.aar:

    Hello.aar

    • 包裹名字
      • 同学们好
    • META-INF
      • 的services.xml
      • MANIFEST.MF
      • Hello.WSDL

现在,我假设,当我将aar放入tomcat1 / webapps / axis2 / WEB-INF / services时,我的服务将被部署

但是,这是我的问题,我如何访问方法World(String name) ??? !!,即我对客户端代码一无所知!

请告诉我制作一个非常基本的Web服务并调用该方法。 上述3个步骤可能是错误的。 这是一个社区维基,随时可以编辑。

谢谢

我假设你只对网络服务客户感兴趣?

选项1

调用Web服务正在使用Axis2 REST支持 ,例如:

HTTP://本地主机:8080 /的Axis2 /服务/为MyService / myOperation参数1 =一个&参数2 =两个

选项2

使用SOAPUI 。 它可以通过读取服务的WSDL为您生成SOAP消息。 我的客户的测试人员一直在广泛使用它,只是对Web服务技术有非常广泛的了解。 令人印象深刻的工

选项3

Groovy客户端(其他基于JVM的语言的方法相同)

使用wsdl2java工具为莎士比亚Web服务创建客户端存根类:

generate.sh

 $AXIS2_HOME/bin/wsdl2java.sh -d adb -s -o build -uri http://www.xmlme.com/WSShakespeare.asmx?WSDL ant -file build/build.xml 

GetSpeech.groovy

 // Dependencies // ============ import com.xmlme.webservices.ShakespeareStub @Grapes([ @Grab(group='org.apache.axis2', module='axis2-kernel', version='1.5.1'), @Grab(group='org.apache.axis2', module='axis2-adb', version='1.5.1'), @Grab(group='org.apache.axis2', module='axis2-transport-local', version='1.5.1'), @Grab(group='org.apache.axis2', module='axis2-transport-http', version='1.5.1'), @Grab(group='xerces', module='xercesImpl', version='2.6.2'), @GrabConfig(systemClassLoader=true) ]) // Main program // ============ def stub = new ShakespeareStub() // Request payload def request = new ShakespeareStub.GetSpeech() request.setRequest("Friends, romans, countrymen") // Send request response = stub.getSpeech(request) println response.getGetSpeechResult() 

使用-cp参数将生成的代码添加到脚本的类路径中

 groovy -cp build/build/classes GetSpeech 

如果您有权访问WSDL,则可以使用以下代码/ JAX-WS客户端来调用任何基于SOAP的Web服务。

 import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; public class WebserviceClient { public static void main(String[] args) throws Exception { URL url = new URL ("http://localhost:9999/ws/additionService?wsdl"); QName qname = new QName("http://test/", "AdditionServiceImplService");//Line 2 Service service = Service.create(url, qname); AdditionService additionService = service .getPort(AdditionService.class); System.out.println(additionService.add(1, 2)); } } 

在第2行中, QName第一个参数是WSDL中使用的命名空间,第二个参数只是服务名称。