本帖最后由 niuzk0411 于 2010-08-31 18:45:26 编辑

解决方案 »

  1.   

    服务器部署时候的错误?还是客户端访问时候的错误?
    服务器是使用什么发布的?aar ? 还是直接javabean ?看看aar的 service.xml文件有没有错误....或者换个最新的axis2试试看
      

  2.   

    使用的是axis2
    部署到服务器的时候访问这个服务出现错误~
    具体xml文件如下:<?xml version="1.0" encoding="UTF-8"?>
    <serviceGroup>
    <service name="SyncNotifySPService">
    <description>SyncNotifySPService</description>
    <parameter name="ServiceObjectSupplier">
    org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier
    </parameter>
    <parameter name="SpringBeanName">
    SyncNotifySPService
         </parameter>
    <messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
    </service>
    </serviceGroup>
      

  3.   


    服务可用的
    访问:http://localhost:8080/OrderNotifySystem/webservice/SyncNotifySPService?wsdl
    直接可以返回webservice
    具体访问http://localhost:8080/OrderNotifySystem/webservice/SyncNotifySPService
    就报错误了,错误如下
    <Exception>
    org.apache.axis2.AxisFault: The service cannot be found for the endpoint reference (EPR) /OrderNotifySystem/webservice/SyncNotifySPService at org.apache.axis2.engine.DispatchPhase.checkPostConditions(DispatchPhase.java:64) at org.apache.axis2.engine.Phase.invoke(Phase.java:333) at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264) at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163) at org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:136) at org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:130) at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:824) at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:253) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 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.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619)  
    </Exception>不晓得是哪的问题了
    具体能根据这个wsdl uri地址生成客户端测试,没有问题,不过具体访问
    http://localhost:8080/OrderNotifySystem/webservice/SyncNotifySPService
    就出现错误~
    等待解决,谢谢~
      

  4.   

    就是配置文件的问题,好好检查services.xml吧,或aar的打包是否正确,类的路径是否正确,还有要看weblogic对services有什么特殊配置要求
      

  5.   

    配置文件?你说的是services.xml?错误在哪?具体都贴出来services.xml代码了
    使用的是tomcat容器部署
    在线等答案+baidu+google+调试中~~~
      

  6.   

    你测试过没有。你先测试一下。那个webService呀。
      

  7.   

    测试没有什么问题,webservice可用
    不过访问http://localhost:8080/OrderNotifySystem/webservice/SyncNotifySPService?wsdl 可以生成webservice文档
    具体访问 http://localhost:8080/OrderNotifySystem/webservice/SyncNotifySPService
    就报上述错误了~~
      

  8.   

    我觉得是没有把axis2安装到tomcat里面去 - -悲剧,我上次装个axis2插件给弄得郁闷死,后来装上了也不能用。
      

  9.   

    这个部署有好几种方式吧~
    参考给你(转载):
    一、services.xml配置方式:1、第一种配置方式: 按方法名称进行配置
    <operation name="methodName">
    <!--表示有参有返回值的方法-->
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    <!--表示有参没有返回值的方法-->
    <messageReceiver class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </operation>2、第二种配置方式:
    <messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>3、普通类配置:
    <service name="serviceName">
    <Description>服务的描述</Description>
    <parameter name="ServiceClass">全类名</parameter>
    <messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
    </service>4、与Spring集成配置(web工程):
    <service name="MySpringService" targetNamespace="http://www.wujianjun.org">
    <Description>测试spring与axis集成(web工程)</Description>
    <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringServletContextObjectSupplier</parameter>
    <parameter name="SpringBeanName">springBeanName</parameter>
    <messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
    </service>5、与Spring集成配置(JAVA工程):
    <service name="MySpringService" targetNamespace="http://www.wujianjun.org">
    <Description>测试spring与axis集成(web工程)</Description>
    <parameter name="ServiceObjectSupplier">org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier</parameter>
    <parameter name="SpringBeanName">springBeanName</parameter>
    <messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
    </service>二、axis2与Spring集成(Web程序中)
    1: 把axis2放入到服务器的发布目录下,把spring.jar放入到/axis2/WEB-INF/lib下.
    2: 把axis2中lib下的包引入工程之中(把spring.jar放入到/axis2/WEB-INF/lib下)
    axiom-api-1.2.7.jar
    axiom-impl-1.2.7.jar
    axis2-adb-1.4.1.jar
    axis2-kernel-1.4.1.jar
    axis2-spring-1.4.1.jar
    backport-util-concurrent-3.1.jar
    commons-codec-1.3.jar
    commons-httpclient-3.1.jar
    commons-logging-1.1.1.jar
    neethi-2.0.4.jar
    spring.jar
    woden-api-1.0M8.jar
    woden-impl-dom-1.0M8.jar
    wsdl4j-1.6.2.jar
    XmlSchema-1.4.2.jar
    annogen-0.1.0.jar
    3: 在web.xml中加入
    <!-- spring -->
        <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
        </listener>
        <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:applicationContext.xml</param-value>
        </context-param>
    <!-- webServices -->
    <servlet>
            <servlet-name>AxisServlet</servlet-name>
            <display-name>Apache-Axis Servlet</display-name>
            <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
       
        <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>/servlet/AxisServlet</url-pattern>
        </servlet-mapping>    <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>*.jws</url-pattern>
        </servlet-mapping>    <servlet-mapping>
            <servlet-name>AxisServlet</servlet-name>
            <url-pattern>/services/*</url-pattern>
        </servlet-mapping>
    4: 编写service类和对应的方法并在applicationContext.xml中进行Bean的配置
    5: 在WEB-INF下建services/模板名称/META-INF/services.xml
    6: 然后再services.xml中对服务进行配置就可以了,访问:http://localhost:8080/projName/services/serviceName?wsdl就可以访问到对应的服务描述文件了。三、axis2与Spring集成(JAVA程序中)
    1: 把axis2放入到服务器的发布目录下,把spring.jar放入到/axis2/WEB-INF/lib下.
    2: 把axis2中lib下的包引入工程之中
    axiom-api-1.2.7.jar
    axiom-impl-1.2.7.jar
    axis2-adb-1.4.1.jar
    axis2-kernel-1.4.1.jar
    axis2-spring-1.4.1.jar
    backport-util-concurrent-3.1.jar
    commons-codec-1.3.jar
    commons-httpclient-3.1.jar
    commons-logging-1.1.1.jar
    neethi-2.0.4.jar
    spring.jar
    woden-api-1.0M8.jar
    woden-impl-dom-1.0M8.jar
    wsdl4j-1.6.2.jar
    XmlSchema-1.4.2.jar
    annogen-0.1.0.jar
    3: 编写service类和对应的方法并在applicationContext.xml中进行Bean的配置
    4:在applicationContext.xml中引入axis2的bean
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" >
    <beans>
    <bean id="applicationContext" class="org.apache.axis2.extensions.spring.receivers.ApplicationContextHolder"  />
    </beans>
    5: 建立一个初始化spring容器的类(com.wujianjun.axis2.java.SpringInit)实现ServiceLifeCycle接口。编写startUp方法如下:
    ClassLoader classLoader = service.getClassLoader();
        ClassPathXmlApplicationContext appCtx = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"}, false);
        appCtx.setClassLoader(classLoader);
        appCtx.refresh();
    6: 在src下建meta-inf/services.xml,内容如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <serviceGroup>
    <service name="MySpringAxis2" class="com.wujianjun.axis2.java.SpringInit">
    <description>Spring aware</description>
    <parameter name="ServiceObjectSupplier">
    org.apache.axis2.extensions.spring.receivers.SpringAppContextAwareObjectSupplier
    </parameter>
    <parameter name="SpringBeanName">
    springService
         </parameter>
    <messageReceivers>
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
    class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
    class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
    </messageReceivers>
    </service>
    </serviceGroup>
    7: 把src下的文件把成jar包后,改名为*.aar 放入/axis2/WEB-INF/services下。
    8: 启动服务器,访问http://localhost:8080/projName/services/serviceName?wsdl就可以访问到对应的服务描述文件了。
      

  10.   

    经过查证,应该是没有参数报的异常吧,正常生成客户端测试webservice没有问题~
      

  11.   

    http://www.csdnjava.com/thread-1432-1-1.html
      

  12.   

    http://www.csdnjava.com/thread-1432-1-1.html 这里面有myeclipse 安装axi2 的 教程 以及axi2 的插件jar 包/。