今天写了个Axis2的例子,如下:
service类:
public class FanServiceWork {

public String SayHello(String uname){
return "Hello "+uname;
}

public int multiplication(int num1,int num2){
return num1*num2;
}

public int div(int num1,int num2){
return num1/num2;
}}service.xml内容如下:
<service name="Fanservice">
<description>
This is a my Web Service.
</description>
 <parameter name="ServiceClass" locked="false">
  com.FanServiceWork
 </parameter>
 <operation name="SayHello">
  <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
 </operation>
</service>
把他发布到tomcat下面显示如下:
Available services
Fanservice
Service EPR : http://127.0.0.1:8080/axis2/services/Fanservice
Service REST epr : http://127.0.0.1:8080/axis2/rest/Fanservice 我点击Fanservice链接,居然报以下错误:
- <error>
  <description>Unable to generate WSDL for this service</description> 
  <reason>If you wish Axis2 to automatically generate the WSDL, then please use one of the RPC message receivers for the service(s)/operation(s) in services.xml. If you have added a custom WSDL in the META-INF directory, then please make sure that the name of the service in services.xml (/serviceGroup/service/@name) is the same as in the custom wsdl's service name (/wsdl:definitions/wsdl:service/@name).</reason> 
  </error>请高人帮忙,是在是想不出哪里错了,试了义早上!

解决方案 »

  1.   

    我将这个包加到了Axis2的WEB-INF下的lib下,但是还是报一样的错
      

  2.   

    http://hi.baidu.com/lit0302/blog/item/a22b510e6a2850cc7bcbe18f.html
      

  3.   

    我写了一个和你类似的类,但是没用到你说的 servicev.xml文件 而是使用server-config.wsdd
      

  4.   

    <?xml version="1.0" encoding="UTF-8"?>
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
     <globalConfiguration>
      <parameter name="adminPassword" value="admin"/>
      <parameter name="attachments.Directory" value="D:\wade\software\Tomcat\webApps\WebServiceTest\WEB-INF\attachments"/>
      <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
      <parameter name="sendXsiTypes" value="true"/>
      <parameter name="sendMultiRefs" value="true"/>
      <parameter name="sendXMLDeclaration" value="true"/>
      <parameter name="axis.sendMinimizedElements" value="true"/>
      <requestFlow>
       <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="session"/>
       </handler>
       <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="request"/>
        <parameter name="extension" value=".jwr"/>
       </handler>
      </requestFlow>
     </globalConfiguration>
     <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
     <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
     <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
     
     <service name="Hello" provider="java:RPC">
      <parameter name="allowedMethods" value="*"/>
      <parameter name="className" value="com.zhangq.webservice.Hello"/>
     </service>
     <service name="AdminService" provider="java:MSG">
      <parameter name="allowedMethods" value="AdminService"/>
      <parameter name="enableRemoteAdmin" value="false"/>
      <parameter name="className" value="org.apache.axis.utils.Admin"/>
      <namespace>http://xml.apache.org/axis/wsdd/</namespace>
     </service>
     <beanMapping languageSpecificType="java:com.zhangq.webservice.Pet" qname="ns1:Pet" 
       xmlns:ns1="urn:BeanService"/> 
     <transport name="local">
      <responseFlow>
       <handler type="LocalResponder"/>
      </responseFlow>
     </transport>
     <transport name="http">
      <requestFlow>
       <handler type="URLMapper"/>
       <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
      </requestFlow>
     </transport>
    </deployment>
    把这个文件中的相关部分,替换成你的类和方法名等。试试 我的ws是成功的
      

  5.   

    对了,我的好像是axis1.1 不知道axis2里面是不是换成service.xml文件了
      

  6.   

    你那种用法是Axis1的写发吧,Axis2完全不同了
      

  7.   

    查过了 是service.xml文件把  <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 改成<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
      

  8.   

    网上有评论说Axis2不支持jdk1.6,只支持jdk1.5,真是想不明白,jdk不是向下兼容的吗
      

  9.   

    我去下了个axis2-1.4-1的版本,居然就好了,真是郁闷,原来是先前那个版本有Bug
      

  10.   

    哈哈,终于把Axis2搞掂啦,去下了个axis2-1.4.war和axis2-1.4-bin.zip回来,就没有问题了,axis2-1.1的好像有bug