spring 找不到 SaajSoapMessage 的端点映射

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21246780/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-08 06:28:27  来源:igfitidea点击:

No endpoint mapping found for SaajSoapMessage

springsoap

提问by Michael

I have been having issues trying to get endpoint mapping to work for my web service. I am using Tomcat to host my web service and I am using soapUI to send test messages to it.

我一直在尝试使端点映射适用于我的 Web 服务时遇到问题。我正在使用 Tomcat 来托管我的 Web 服务,并且我正在使用 soapUI 向它发送测试消息。

The following message from the Tomcat log shows the creation of the endpoint mapping bean:

Tomcat 日志中的以下消息显示了端点映射 bean 的创建:

6458 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping  - Mapped key [{http://endpoint.ws.example.com}pushAbcToXyzOperation] onto endpoint [com.abc.xc.model.PushAbcToXyzRequest@131ebb3[...]]

However, the endpoint mapping bean must be incorrect because I receive the following "no endpoint mapping found" message:

但是,端点映射 bean 一定不正确,因为我收到以下“未找到端点映射”消息:

6739 [http-apr-8080-exec-6] WARN  org.springframework.ws.server.EndpointNotFound  - No endpoint mapping found for [SaajSoapMessage {http://endpoint.ws.example.com}pushAbcToXyzOperation]

Here is the web.xml

这是 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
         version="2.4">

    <display-name>abc2xyzWS</display-name>

    <servlet>
        <servlet-name>spring-ws</servlet-name>
        <servlet-class>org.springframework.ws.transport.http.MessageDispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>WEB-INF/spring-ws-context.xml</param-value>
    </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-ws</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

</web-app>

Here is the spring-ws-context.xml

这是 spring-ws-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:sws="http://www.springframework.org/schema/web-services"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd">

    <sws:annotation-driven/>
    <context:annotation-config />

    <import resource="classpath:/xyz-endpoint-context.xml" />

    <!--==========================================================
    *
    *  Spring Web Service Configuration
    *
    =============================================================-->

    <bean name="loadPayload" class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
        <description>
            Detects @PayloadRoot annotations on @Endpoint bean methods.
        </description>

        <property name="interceptors">
            <list>
                <bean class="org.springframework.ws.server.endpoint.interceptor.PayloadLoggingInterceptor"/>
                <bean class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
                    <property name="schema" value="classpath:/AbcAPI.xsd"/>
                    <property name="validateRequest" value="true"/>
                    <property name="validateResponse" value="true"/>
                </bean>
            </list>
        </property>

        <property name="order" value="1"/>
    </bean>

    <bean id="pushService" class="com.abc.xc.model.PushAbcToXyzRequest"/>

    <bean id="endpointMapping" class="org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping">
       <property name="mappings">
          <props>
              <prop key="{http://endpoint.ws.example.com}pushAbcToXyzOperation">pushService</prop>
          </props>
       </property>

    </bean>

</beans>

Here is the xyz-endpoint-context.xml

这是 xyz-endpoint-context.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <import resource="classpath:/applicationContext.xml" />
    <context:component-scan base-package="com.abc.ws.endpoint"/>
</beans>

Here is the applicationContext.xml

这是 applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">

    <!--===========================================================================
     *
     *  opis2pips service module configuration.
     *
     =============================================================================-->
     <context:property-placeholder location="classpath:/applicationContext.properties"/>
     <context:component-scan base-package="com.abc.xc.service"/>

     <bean id="serviceURL" class="java.lang.String">
         <constructor-arg><value>${serviceURL}</value></constructor-arg>
     </bean>
     ...
     <bean id="emailerrormessage" class="java.lang.String">
        <constructor-arg><value>${emailerrormessage}</value></constructor-arg>
     </bean> 

</beans>

Here is the endpoint

这是终点

package com.abc.ws.endpoint.endpoint;

import com.abc.xc.model.WSstatusType;
import com.abc.xc.model.PushAbcToXyzRequest;
import com.abc.xc.model.QueryXyzRequest;
import com.abc.xc.model.XyzResponse;
import com.abc.xc.service.XyzClient;
import com.abc.xc.service.WSemailService;
import com.abc.xc.service.AbcToXyzTranslationService;
import com.abc.xc.exception.WSexception;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ws.server.endpoint.annotation.Endpoint;
import org.springframework.ws.server.endpoint.annotation.PayloadRoot;
import org.springframework.ws.server.endpoint.annotation.RequestPayload;
import org.springframework.ws.server.endpoint.annotation.ResponsePayload;

import contracts.xyz.GetTicketResponse;
import contracts.xyz.PostTicketResponse;
import contracts.xyz.Ticket;
import contracts.xyz.TicketMessageProcessingResult;

@Endpoint
public class XyzWebServiceController {
    @Autowired
    private XyzClient XyzClientservice;
    @Autowired
    private AbcToXyzTranslationService translationservice;
    @Autowired
    WSemailService mailservice;

    protected static final String NAMESPACE_URI = "http://www.example.com/schema";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "PushAbcToXyzRequest")

    @ResponsePayload
    public XyzResponse PushAbcToXyzOperation(@RequestPayload PushAbcToXyzRequest PushAbcToXyzRequest){

        XyzResponse XyzResponse = null;
        Ticket ticket = null;
        try {
            ticket = translationservice.abcInputToXyzTicket(PushAbcToXyzRequest);
            PostTicketResponse response = XyzClientservice.postTicket(ticket);
            Long transactionid = response.getInteractionId();

            if(transactionid != null){
                GetTicketResponse gtresponse = XyzClientservice.getTicket();
                Ticket gtresponseTicket = gtresponse.getTicket().getValue();
                XyzResponse =  translationservice.XyzTicketToXyzResponse(gtresponseTicket);
            }

            XyzResponse.setWSstatus(WSstatusType.SUCCESS);
            mailservice.sendEmail(true, PushAbcToXyzRequest, transactionid);
...

Here is the SOAP request

这是 SOAP 请求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:end="http://endpoint.ws.example.com" xmlns:mod="http://model.xc.example.com">
   <soapenv:Header/>
   <soapenv:Body>
      <end:pushAbcToXyzOperation>
         <end:pushAbcToXyzRequest>
            ...
         </end:pushAbcToXyzRequest>
      </end:pushAbcToXyzOperation>
   </soapenv:Body>
</soapenv:Envelope>

Here is a portion of the Tomcat log, from the creation of the endpoint mapping bean, through the "no endpoint mapping found" message:

这是 Tomcat 日志的一部分,从端点映射 bean 的创建到“未找到端点映射”消息:

6349 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Finished creating instance of bean 'loadPayload'
6349 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Creating shared instance of singleton bean 'pushService'
6349 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Creating instance of bean 'pushService'
6365 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Eagerly caching bean 'pushService' to allow for resolving potential circular references
6427 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Finished creating instance of bean 'pushService'
6427 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Creating shared instance of singleton bean 'endpointMapping'
6427 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Creating instance of bean 'endpointMapping'
6427 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Eagerly caching bean 'endpointMapping' to allow for resolving potential circular references
6443 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'pushService'
6458 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping  - Mapped key [{http://endpoint.ws.example.com}pushAbcToXyzOperation] onto endpoint [com.abc.xc.model.PushAbcToXyzRequest@131ebb3[requestID=<null>, ...]]
6458 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Finished creating instance of bean 'endpointMapping'
6458 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.context.annotation.ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor#0'
6474 [http-apr-8080-exec-6] DEBUG org.springframework.web.context.support.XmlWebApplicationContext  - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@13a0067]
6474 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'lifecycleProcessor'
6505 [http-apr-8080-exec-6] INFO  org.springframework.ws.soap.saaj.SaajSoapMessageFactory  - Creating SAAJ 1.3 MessageFactory with SOAP 1.1 Protocol
6505 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.saaj.SaajSoapMessageFactory  - Using MessageFactory class [com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl]
6505 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.MessageDispatcherServlet  - No WebServiceMessageFactory found in servlet 'spring-ws': using default
6505 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.server.endpoint.adapter.DefaultMethodEndpointAdapter#0'
6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.soap.server.endpoint.SoapFaultAnnotationExceptionResolver#0'
6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.soap.server.endpoint.SimpleSoapExceptionResolver#0'
6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping#0'
6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping#0'
6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping#0'
6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'loadPayload'
6521 [http-apr-8080-exec-6] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory  - Returning cached instance of singleton bean 'endpointMapping'
6521 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.MessageDispatcherServlet  - No MessageDispatcher found in servlet 'spring-ws': using default
6521 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.MessageDispatcherServlet  - Published WebApplicationContext of servlet 'spring-ws' as ServletContext attribute with name [org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring-ws]
6521 [http-apr-8080-exec-6] INFO  org.springframework.ws.transport.http.MessageDispatcherServlet  - FrameworkServlet 'spring-ws': initialization completed in 6053 ms
6521 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.MessageDispatcherServlet  - Servlet 'spring-ws' configured successfully
6583 [http-apr-8080-exec-6] DEBUG org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter  - Accepting incoming [org.springframework.ws.transport.http.HttpServletConnection@7ac6c] at [http://localhost:8080/abc2xyzWS/services/XyzWebServiceController]
6677 [http-apr-8080-exec-6] DEBUG org.springframework.ws.server.MessageTracing.received  - Received request [SaajSoapMessage {http://endpoint.ws.example.com}pushAbcToXyzOperation]
6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping  - Looking up endpoint for [{http://endpoint.ws.example.com}pushAbcToXyzOperation]
6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping@14481bb] has no mapping for request
6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping  - Looking up endpoint for []
6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.soap.server.endpoint.mapping.SoapActionAnnotationMethodEndpointMapping@a14fed] has no mapping for request
6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping  - Looking up endpoint for [{http://endpoint.ws.example.com}pushAbcToXyzOperation]
6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping@868c6d] has no mapping for request
6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.soap.addressing.server.AnnotationActionEndpointMapping@45484a] has no mapping for request
6723 [http-apr-8080-exec-6] DEBUG org.springframework.ws.soap.server.SoapMessageDispatcher  - Endpoint mapping [org.springframework.ws.soap.server.endpoint.mapping.SoapActionEndpointMapping@8d00c6] has no mapping for request
6739 [http-apr-8080-exec-6] WARN  org.springframework.ws.server.EndpointNotFound  - No endpoint mapping found for [SaajSoapMessage {http://endpoint.ws.example.com}pushAbcToXyzOperation]

Please let me know if you need to see any additional information, and thank you in advance for any help in solving this issue.

如果您需要查看任何其他信息,请告诉我,并提前感谢您对解决此问题的任何帮助。

回答by ftrujillo

We faced a similar problem and in our case was that the EndPoint was not included in the component scan directive on the spring configuration.

我们遇到了类似的问题,在我们的案例中,EndPoint 未包含在 spring 配置的组件扫描指令中。

In the configuration you indicated you are using:

在您指出您正在使用的配置中:

<context:component-scan base-package="com.abc.ws.endpoint"/>

But your endpoint is in the next package:

但是您的端点位于下一个包中:

package com.abc.ws.endpoint.endpoint;

So you have to change the component-scan tag, something like:

所以你必须改变 component-scan 标签,比如:

<context:component-scan base-package="com.abc.ws.endpoint.endpoint"/>

Or refactor the endpoint to another package.

或者将端点重构为另一个包。

回答by Nathan Ward

Shouldn't the NAMESPACE_URI value be the same as the namespace specified in the wsdl and the xml endpointMapping in spring-ws-context.xml? The namespace specified in NAMESPACE_URI does not include ".ws", which is included in the wsdl namespace and the endpointMapping configuration.

NAMESPACE_URI 值不应该与 wsdl 中指定的命名空间和 spring-ws-context.xml 中的 xml endpointMapping 相同吗?NAMESPACE_URI 中指定的命名空间不包括“.ws”,它包含在 wsdl 命名空间和 endpointMapping 配置中。

To help with troubleshooting this issue and as a regression test in the future, you might want to write an "endpoint integration test" that you can run from Eclipse and as part of your build process (http://docs.spring.io/spring-ws/site/reference/html/server.html#d5e1526).

为了帮助解决此问题并作为将来的回归测试,您可能需要编写一个“端点集成测试”,您可以从 Eclipse 中运行它并作为构建过程的一部分(http://docs.spring.io/ spring-ws/site/reference/html/server.html#d5e1526)。

回答by S.Szabolcs

I think your problem is that you have multiple ApplicationContexts (multiple xml-s containing bean definitions) and PayloadRootAnnotationMethodEndpointMappingby default only looks for endpoints in its own ApplicationContext (in its own xml). To force the detection of endpoints in other xml-s, you have to set the detectEndpointsInAncestorContextsproperty of PayloadRootAnnotationMethodEndpointMappingto true.

我认为你的问题是你有多个 ApplicationContexts(多个 xml-s 包含 bean 定义)和PayloadRootAnnotationMethodEndpointMapping默认情况下只在它自己的 ApplicationContext 中查找端点(在它自己的 xml 中)。要强制其他XML-S端点检测,您必须将设置detectEndpointsInAncestorContexts财产PayloadRootAnnotationMethodEndpointMapping

回答by May12

In my case I just add into context tag packages with endpoint class and implementation class like:

就我而言,我只是将端点类和实现类添加到上下文标记包中,例如:

 <context:component-scan base-package="com.abc.ws.services ,com.abc.ws.endpoint"/>

回答by user3592745

I was following Spring's guide on creating a SOAP web service using Springbootand got the same error. I'm unsure what caused it, but I found that when I tried to make a request like this using WebServiceTemplate in my integration test, I got the 404, even though during my test execution the server was up and the WSDL was available. This is what I did when it didn't work:

我正在遵循Spring 的使用 Springboot 创建 SOAP Web 服务的指南,但遇到了同样的错误。我不确定是什么原因造成的,但我发现当我尝试在集成测试中使用 WebServiceTemplate 发出这样的请求时,我得到了 404,即使在我的测试执行期间服务器已启动并且 WSDL 可用。这是我在不起作用时所做的:

    final String request = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n" +
            "\t\t\t\t  xmlns:gs=\"http://spring.io/guides/gs-producing-web-service\">\n" +
            "   <soapenv:Header/>\n" +
            "   <soapenv:Body>\n" +
            "      <gs:getCountryRequest>\n" +
            "         <gs:name>Spain</gs:name>\n" +
            "      </gs:getCountryRequest>\n" +
            "   </soapenv:Body>\n" +
            "</soapenv:Envelope>";

    StreamSource source = new StreamSource(new StringReader(request));
    StreamResult result = new StreamResult(System.out);

    webServiceTemplate.sendSourceAndReceiveToResult("http://localhost:8080/ws", source, result);

When I changed this to use the marshaller instead of the raw request string like this:

当我将其更改为使用编组器而不是像这样的原始请求字符串时:

        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
    marshaller.setContextPath("io.spring.guides.gs_producing_web_service");
    marshaller.setSchema(new ClassPathResource("countries.xsd"));
    webServiceTemplate.setMarshaller(marshaller);
    webServiceTemplate.setUnmarshaller(marshaller);

    GetCountryRequest getCountryRequest = new GetCountryRequest();
    getCountryRequest.setName("Spain");
    GetCountryResponse getCountryResponse = (GetCountryResponse) webServiceTemplate.marshalSendAndReceive("http://localhost:" + serverPort + "/ws", getCountryRequest);

    assertThat(getCountryResponse.getCountry().getName()).isEqualTo("Spain");
    assertThat(getCountryResponse.getCountry().getCapital()).isEqualTo("Madrid");
    assertThat(getCountryResponse.getCountry().getCurrency()).isEqualTo(Currency.EUR);
    assertThat(getCountryResponse.getCountry().getPopulation()).isEqualTo(46704314);

where I actually used the generated WSDL classes, then the same request was successful. I have a feeling the original raw request string was incompatible, even though I could use that exact same string via a curl request to my SOAP endpoint and that works (like it tells you to do in the guide).

我实际使用了生成的 WSDL 类,然后相同的请求成功了。我有一种感觉原始的原始请求字符串不兼容,即使我可以通过 curl 请求使用完全相同的字符串到我的 SOAP 端点并且可以工作(就像它在指南中告诉您的那样)。

回答by LlargoMln

rename the class XyzWebServiceControllerto XyzWebServiceControllerEndpoint

将类重命名XyzWebServiceControllerXyzWebServiceControllerEndpoint