当前位置: 首页 > 知识库问答 >
问题:

如何设置servlet的映射,以便它在与CXF相同的路径上进行侦听?

宿景曜
2023-03-14

来自我的pom的依赖项:

2.2.5.Spring释放装置3.3。5对于CXF

  • Spring启动
  • Spring启动启动器执行器
  • 启动启动网页 Spring引导工具 启动配置处理器
  • Spring启动-启动-tomcat
  • Spring启动-启动-测试
  • cxf-Spring-启动-jaxws
  • cxf-rt-功能-日志记录

以下是应用程序中定义的服务器设置。yml:

server:
 port: 8080
 servlet:
  context-path: /cs

第一个Servlet是配置如下的CXF JAXWSendpoint:

// https://github.com/apache/cxf

@Bean(name=Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
    return new SpringBus();
}

@Bean
public IFileNetWSSoap documentService() {
    return new DocumentServiceEndpoint();
}

@Bean
public Endpoint endpoint() {
    EndpointImpl endpoint = new EndpointImpl(springBus(), documentService());
    endpoint.setServiceName(fileNetWS().getServiceName());
    endpoint.setWsdlLocation(fileNetWS().getWSDLDocumentLocation().toString());
    endpoint.publish(properties.getDocumentEndpoint());
    Binding binding = endpoint.getBinding();
    ((SOAPBinding)binding).setMTOMEnabled(true);
    return endpoint;
}

正在收听此地址:http://localhost:8080/cs/services/document-service_1.0

第二个Servlet是javax.servlet.http.HttpServlet(TomCat现在):

    @WebServlet(urlPatterns = {"/image-service_1.0"})
    public class ImageServiceEndpoint extends HttpServlet {

    @Autowired
    private BusinessService businessServices;

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) {
        doGet(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
        this.businessServices.imageRetrieval(request, response);
    }
}

当前正在收听此地址:http://localhost:8080/cs/image-服务1.0

最后,还有Spring Boot执行器Servlet。

正在收听此地址:http://localhost:8080/cs/actuator

我的问题是“如何配置WebServlet来监听CXF段而不破坏所有内容?”例如http://localhost:8080/cs/services/image-service_1.0

有人提醒我,也许我应该使用SpringMVC控制器来代替Servlet。我对这个endpointid的唯一要求是接收查询字符串参数并将二进制内容流回到调用者。

共有1个答案

杜英叡
2023-03-14

您不能接管与CXF WS Endpoint相同的路径(默认: /services)

 类似资料:
  • 主要内容:Servlet 单一映射,Servlet 多重映射客户端通过 URL 地址来访问 Web 服务器中的资源,Servlet 程序若想被外界访问,就必须被映射到一个 URL 地址上。很多时候,该 URL 地址和 Servlet 程序的物理路径(在硬盘上的存储位置)并不一致,因此它被称为虚拟路径。Servlet 与虚拟路径的对应关系就叫做 Servlet 虚拟路径映射。 Servlet 虚拟路径映射可以被分为 2 类: 单一映射 多重映射 下面介绍如何

  • 我创建laravel项目,在我的本地Windows电脑上工作良好。一旦我上传到Centos7服务器(通过SSH),我的所有路由都不工作。我试图通过行动修复,例如清除缓存,删除供应商文件夹和重做安装作曲家,但没有任何帮助。我从下面的日志中抓取。 [2018-12-20 13:09:17]本地的。错误:逻辑异常:无法为序列化准备路由[api/user]。在 /var/www/html/srp/vend

  • 我使用Spring Boot 2.1.2. RELEASE编写联调,无法设置所需的上下文路径。它总是等于空字符串(用servletContext.getContextPath()获得)。 application-test.properties: 测试配置: 呼叫代码: 应用测试中的其他属性。按预期注入属性。上下文路径通常在我运行服务器时设置。我试图以@SpringBootTest的形式启动这个测试

  • 问题内容: 如何设置路径而不必在每次重新启动计算机时都进行设置? 尝试在Ubuntu计算机上设置JAVA_HOME时,使用了以下方法: 1)从终端执行以下命令: 2)我直接编辑了文件以在其中添加路径 真正奇怪的是,如果我在上述两种方法中的一种之后使用命令进行测试,我可以看到它设置正确,但是如果重新启动,再次注销/登录或者甚至在机器上工作了一段时间之后,都不再可用设置,我必须使用以上两种方法中的任何

  • 我有一个简单的Maven servlet/jsp应用程序,我部署到本地Tomcat 9(通过Eclipse)。JSP页面存储在根文件夹()下,当Maven安装WAR时,它们位于根文件夹(旁边的和)下。 servlet的URL模式是为每个servlet注释的,例如,等。大多数servlet执行对各种JSP页面的调度,但是我在其中一个页面上有一个直接的锚链接。 我想将这些JSP页面移动到各自的目录中,