我部署了一个简单的JAX-WS服务,首先构建契约。在JAX-WSendpoint配置中,我指定了原始wsdl的位置。但是,这不是cxf返回的wsdl。原始wsdl包含策略语句,这些语句是契约的重要组成部分,应该在wsdl中对服务使用者可见。
我知道我在endpoint上设置的wsdl位置是正确的。如果不正确,战争部署就会失败。我还记录了要再次检查的值。
在本地部署时,该服务在以下位置可用:http://localhost:8080/store-web-0.1.0/services/store。
问题:wsdl在以下位置可用:http://localhost:8080/store-web-0.1.0/services/store?wsdl不包含可以在原始wsdl中看到的策略语句。遗漏合同的这一重要部分是不可接受的。
问题:为什么wsdl在http://localhost:8080/store-web-0.1.0/services/store?wsdl缺少策略语句,而不仅仅是在jax wsendpoint上配置的原始wsdl?
更多细节如下。如果你还想看其他信息,请告诉我。
提前谢谢!
细节
我们正在使用: JBoss EAP 6.2,CXF 2.7.16(移动到CXF 3. x不是一个选项),Spring 4.1.6
在jboss-deployment-descriptor.xml文件中排除webservice子系统
JAX-WS配置类
@Bean StoreImpl storeImpl() {
return new StoreImpl();
}
@Bean
public Endpoint storeServiceEndpoint() {
EndpointImpl endpoint = new EndpointImpl(storeImpl());
endpoint.publish("/store");
// This configuration is located in the WAR, but WSDL is in separate JAR
String wsdlLocation = this.getClass().getResource("/store.wsdl").toString();
endpoint.setWsdlLocation(wsdlLocation);
return endpoint;
}
Web服务实现类
@WebService(endpointInterface = "my.service.Store", serviceName = "store")
public class StoreImpl implements Store {
public StoreImpl() {
}
@Override
public BuySomethingResponse buySomething(BuySomethingRequest buySomethingRequest) {
// operation implementation code here
return response;
}
}
Web应用程序初始化
@Order(value=1)
public class StoreWebInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(JAXWSEndpointConfig.class);
container.addListener(new ContextLoaderListener(context));
}
}
@Order(value=2)
public class CXFWebInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext container) throws ServletException {
ServletRegistration.Dynamic dispatcher = container.addServlet("CXFServlet", CXFServlet.class);
dispatcher.addMapping("/services/*");
}
}
我能够找到问题,其中有3个。
问题#1正如问题中包含的JAX-WS配置类代码所示,我在发布endpoint后设置了wsdl位置。
问题2和问题3StoreImpl
类上的@WebService
注释需要设置两个附加属性:targetNamespace
和portName
。显然,它们的值需要与原始WSDL中定义的内容相匹配。
在 spring-cloud-netflix 设置中(一切都使用 feign、ribbon、eureka、zuul),是否有任何简单/优雅/开箱即用的方式(即基于 serviceId 与 URL 的发现)让 CompositeAB 通过 Zuul 与 ServiceA 和 ServiceB 通信?在我看到的所有示例中,CompositeAB 直接发现并调用 ServiceA,而不是通过 Servi
我正在尝试将Apache CXF与Apache Camel集成。骆驼的配置: 现在,为了调用web服务上的特定操作,我使用以下方法: 但是在包含上述配置后,我得到< code > WARN servlet controller:149-在服务器控制台上找不到对http://localhost:8080/cxf service/services/cxfAuth的Observer的请求,并且在浏览器上
我们运行一个Shibboleth身份提供者,越来越多的人要求我们使用非Shibboleth SAML解决方案与应用程序集成,并且在属性命名方面遇到了困难。用一个纯粹的Shibboleth IdP 我的问题是非Shibboleth服务提供商运营商,他们中的许多人拒绝重新映射IdP发送的属性,而是要求在IdP上定义新属性(携带现有属性中已有的值),使用服务提供商所有者指定的名称。这会导致IdP上的用户
简介 服务提供器是所有 Laravel 应用程序引导中心。你的应用程序以及 Laravel 的所有核心服务都是通过服务提供器进行引导。 在这里,我们说的「引导」其实是指 注册 ,比如注册服务容器绑定、事件监听器、中间件,甚至是路由的注册。服务提供器是配置你的应用程序的中心。 Laravel 的 config/app.php 文件中有一个 providers 数组。数组中的内容是应用程序要加载的所有
简介 服务提供者是所有 Lumen 应用程序启动的中心所在。包括你自己的应用程序,以及所有的 Lumen 核心服务,都是通过服务提供者启动的。 但是,我们所说的「启动」指的是什么?一般而言,我们指的是 注册 事物,包括注册服务容器绑定、事件侦听器、中间件,甚至路由。服务提供者是设置你的应用程序的中心所在。 若你打开 Lumen 的 bootstrap/app.php 文件,你将会看到 $app->
服务提供者是组件和CatLib联系的桥梁。同时也是CatLib启动的中心,所有的服务都是通过服务提供者定义的。 名词定义 组件 组件与CatLib没有任何关系,她们可以独立的运行在不同的框架中。 服务 是由服务提供者将由一个或者多个组件组合而成,并提供一组可以被开发者使用的接口。 容器 CatLib 依赖注入容器。 架构图 创建服务提供者 服务提供者是用来描述一个服务如何为使用者提供服务的,这些关