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

时间:2010-04-01 08:33:05

标签: java web-services axis2

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

**

  

Axis2,Eclipse,Tomcat,Ant

**

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

所以,这种方法是否正确:

  1. 使用实际业务逻辑编写我的Java类
  2. 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

      • 的packageName
        • Hello.class
      • META-INF
        • 的services.xml
        • MANIFEST.MF
        • Hello.WSDL
    3. 现在,我假设,当我将aar放入tomcat1 / webapps / axis2 / WEB-INF / services时,我的服务将被部署

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

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

      由于

2 个答案:

答案 0 :(得分:4)

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

选项1

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

http://localhost:8080/axis2/services/MyService/myOperation?param1=one&param2=two

选项2

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

选项3

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

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

<强> 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

答案 1 :(得分:0)

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

DeckCards

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