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

Spring4。基于x的CXF web服务配置-WildFly 10.1

花烨
2023-03-14

我们希望将Spring应用程序从JBoss 7.1.1迁移到WildFly 10.1。我们使用了基于CXF和Spring管理的web服务,但在WildFly 10.1上我们无法配置这些服务。

我们尝试了两种方法。

>

当我们在jboss-deployment-structure.xml中排除webservice子系统时,在web.xml中配置CXFServlet,并在Spring xml配置文件中配置jaxws: endpoint日志显示服务创建是可以的,但不是基于真正的实现。错误的服务名称、命名空间和地址。

使用Spring配置:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:cxf="http://cxf.apache.org/core"
    xmlns:jaxws="http://cxf.apache.org/jaxws" 
    xmlns:jaxrs="http://cxf.apache.org/jaxrs"
    xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd 
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd 
        http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
        http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd">

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-jaxws.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

    <jaxws:endpoint id="testWs" implementor="ns.test.ws.impl.TestWsImpl"
        address="/test">
        <jaxws:properties>
            <entry key="schema-validation-enabled" value="true" />
        </jaxws:properties>
    </jaxws:endpoint>
</beans>

日志内容:

18:31:11,783INFO[org.springframework.beans.factory.xml.XmlBean定义读取器](ServerService线程池--58)从类路径资源[META-INF/cxf-beans.xml]
18:31:12,177INFO[org.springframework.beans.factory.xml.XmlBean定义读取器](ServerService线程池--58)从类路径资源加载XML bean定义[META-INF/cxf/cxf.xml]
18:31:12,290INFO[org.springframework.beans.factory.xml.XmlBean定义读取器](ServerService线程池--58)从类路径加载XML bean定义资源[META-INF/cxf/cxf-extension-jaxws.xml]
18:31:12,455INFO[org.springframework.beans.factory.xml.XmlBeanDefitionReader](ServerService线程池--58)从类路径资源[META-INF/cxf/cxf-servlet.xml]
18:31:12,960INFO[org.apache.cxf.wsdl.service.factory.反射服务工厂Bean](ServerService线程池--58)从类ns.test.ws.impl.TestWsImpl创建服务{http://impl.ws.test.ns/}

WS实现:

package ns.test.ws.impl;

import java.util.ArrayList;

import javax.jws.WebService;

import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import ns.test.ws.api.TestWs;
import ns.test.ws.domain.ApplicationInfo;
import ns.test.ws.domain.ApplicationInfoRequest;
import ns.test.ws.domain.ApplicationInfoResultContainer;
import ns.test.ws.domain.CallContext;
import ns.test.ws.domain.ResultContext;
import ns.test.ws.domain.ResultMessage;

@WebService(name = "ApplicationInfoService", serviceName = "ApplicationInfoService", portName = "ApplicationInfoServicePort", endpointInterface = "ns.test.ws.api.TestWs", targetNamespace = "http://test.ns/")
@Transactional
public class TestWsImpl implements TestWs {
   @SuppressWarnings("unused")
   private static final org.slf4j.Logger logger = LoggerFactory.getLogger(TestWsImpl.class);

   @Autowired
   private VersionInfo versionInfo;

   public ApplicationInfoResultContainer test(CallContext callContext, ApplicationInfoRequest appInfoRequest) {
      ApplicationInfo result = new ApplicationInfo();
      result.setAppName(versionInfo.getAppName());
      result.setAppVersion(versionInfo.getVersion());

      ResultContext resultContext = new ResultContext();
      resultContext.setCorrelationId("corrId");
      resultContext.setHighestMessageSeverity("W");
      resultContext.setMessageList(new ArrayList<ResultMessage>());
      resultContext.getMessageList().add(new ResultMessage("code", "sev", "system", "message"));

      return new ApplicationInfoResultContainer(result, resultContext);
   }
}

我们做错了什么?我们应该如何配置spring应用程序

使用的依赖项:

WildFly 10.1
CXF 3.1.6(WildFly 10.1模块)
Spring 4.3.7

共有1个答案

谭景明
2023-03-14

我找到了解决办法。请参阅下面回购中的示例代码。

https://github.com/SeniorRoland/spring-wildfly

 类似资料:
  • Config 用于查找config目录下得配置参数,提供get与set方法 Config::Get($key) 框架内核版本>=2.0.1时,支持设置默认参数, Config::Get($key, $default) use Config; //文件名::key Config::get('app::environment');//指获取config/app.php中的environment值 Co

  • 我在laravel开发了一个网站,并上传到网络服务器。我将所有文件和文件夹上传到根目录和公共文件夹的文件public_html。现在,当我键入网址到我的浏览器的主页工作正常,但我的其他路线显示 在laravel文档中,我发现“存储和引导/缓存目录中的目录应该可以由web服务器写入,否则laravel将无法运行。” 这是原因吗。如果是,那么我该怎么做?

  • 问题内容: 我有spring XML,可以使用以下配置在服务器模式下启动H2数据库: 我想转换为基于Java的配置。我似乎在这里发表了一篇文章:使用Spring提出并设置内存数据库,并提出了相同的问题,我查看了http://docs.spring.io/spring/docs/3.0.x/spring-framework- reference/ html / jdbc.html#jdbc-embe

  • 介绍常用的服务配置。 云联壹云 平台支持基于climc命令修改常用服务配置。 说明 请确保First Node节点已正确初始化climc工具,配置步骤请参考CLIMC工具 通用配置命令如下 目前支持配置的服务有keystone、glance、region2、yunionapi、common等。 命令模式 在命令行下输入climc并带额定的参数获取相应的结果。 # 查看服务的配置信息 $ climc

  • 问题内容: 在最近我从事的一些大型项目中,选择其中一种(XML或注释)似乎变得越来越重要。随着项目的发展,一致性对于可维护性非常重要。 我的问题是:与基于注释的配置相比,基于XML的配置有哪些优势?与基于XML的配置相比,基于注释的配置有哪些优势? 问题答案: 注释有其用途,但它们不是杀死XML配置的灵丹妙药。我建议将两者混合! 例如,如果使用Spring,则将XML用于应用程序的依赖注入部分是完

  • braft并不能直接被任何client访问, 本文主要是说明一个能访问braft节点的client需要那些要素。 Example client side code of Counter 总体流程 要访问braft的主节点,需要做这么一些事情: 需要知道这个复制组有哪些节点, 这个可以通过配置列表,记录在dns,或者提供某些naming service如集群的master,redis, zookee