无法访问 WSDL 端点

Not able to access WSDL end point

我是 SOAP Web 服务的新手。我正在开发一些项目,该项目使用 Spring 框架进行依赖注入,并使用 JAX WS 创建端点并执行一些操作。

我在 class 创建端点的地方使用依赖注入。 当我 运行 应用程序时,出现以下错误。

这是堆栈跟踪

No qualifying bean of type [com.wex.gbp.service.EmployeeService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true), @org.springframework.beans.factory.annotation.Qualifier(value=employeeService)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1100)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:855)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.processInjection(AutowiredAnnotationBeanPostProcessor.java:307)
    at org.springframework.web.context.support.SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(SpringBeanAutowiringSupport.java:85)
    at org.springframework.web.context.support.SpringBeanAutowiringSupport.<init>(SpringBeanAutowiringSupport.java:68)
    at com.wex.gbp.business.common.ws.endpoints.LookUpServiceEndpoint.<init>(LookUpServiceEndpoint.java:27)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
    at java.lang.Class.newInstance(Class.java:442)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:116)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1148)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)

这就是我创建终点的地方。

@WebService(serviceName = "LookUpServiceBeanService", portName = "LookUpServiceBeanPort", name = "LookUpService", targetNamespace = "http://namespaceurl.com/")
@SOAPBinding(style = Style.DOCUMENT)
@HandlerChain(file = "chain.xml")
    @Component
    public class LookUpServiceEndpoint extends SpringBeanAutowiringSupport {

        private static final Logger LOGGER = LoggerFactory.getLogger(LookUpServiceEndpoint.class);



@Autowired
@Qualifier(value="employeeService")
private EmployeeService employeeService;
    // Other methods

    }

我确实有具有相同限定符名称的服务 class。 我的 web.xml 包含

 <servlet>
        <servlet-name>LookUpService</servlet-name>
        <servlet-class>com.ws.endpoints.LookUpServiceEndpoint</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>LookUpService</servlet-name>
        <url-pattern>/services/LookUpService</url-pattern>
    </servlet-mapping>

当我尝试访问 url“http://localhost:8080/Project_WSDL/services/LookUpService?wsdl”时,出现错误。

请帮我解决这个问题?

终于,我能够解决这个问题了。我以前的代码几乎没有问题。

  1. Spring 和 Jax ws 集成没有依赖关系。
  2. web.xml
  3. 中 Ws 的监听器
  4. 在 applicationContext.xml
  5. 中配置 Web 服务 url

对于第一个问题,我添加了以下依赖项

<dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>2.2.3</version>
        </dependency>

        <!-- Library from java.net, integrate Spring with JAX-WS -->
        <dependency>
            <groupId>org.jvnet.jax-ws-commons.spring</groupId>
            <artifactId>jaxws-spring</artifactId>
            <version>1.8</version>
</dependency>

对于第二个,我在 web.xml

中添加了以下行
<servlet>
        <servlet-name>jaxws-servlet</servlet-name>
        <servlet-class>
            com.sun.xml.ws.transport.http.servlet.WSSpringServlet
        </servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>jaxws-servlet</servlet-name>
        <url-pattern>/services/LookUpService</url-pattern>
    </servlet-mapping>

最后,我在 applicationContext.xml

中添加了绑定 url
<wss:binding url="/services/LookUpService">
        <wss:service>
            <ws:service bean="#lookUpServiceEndpoint" />
        </wss:service>
    </wss:binding>

对我来说,这就是问题所在。但其他人可能会有所不同。