当前位置: 首页 > 面试题库 >

如何在Java中公开CXF Restful Web服务?

查学文
2023-03-14
问题内容

是否有喜欢Endpoint.publish(address, implementor)公开服务的课程?我正在尝试在Tomcat上部署我的应用程序。CXF或JAX-RS中是否有任何类公开REST Web服务?


问题答案:

您将需要来注释的API在serviceBean
javax.ws.rs代表HTTP方法,如基于注释GETPUTPOSTDELETE,等,这将暴露你的API到JAX-
RS服务器,您需要在CXF配置XML创建。像这样-

<jaxrs:server id="base" address="/">
    <jaxrs:providers>
        <ref bean="provider1" />
        <ref bean="provider2" />            
    </jaxrs:providers>
    <jaxrs:serviceBeans>
        <ref bean="serviceBean" />
    </jaxrs:serviceBeans>
</jaxrs:server>

该配置文件与<context-param>您的web.xml中的contextConfigLocation相同。

如果您不使用Spring,则可以使用以下方法以编程方式创建JAX-RS服务器:

JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(abc.class);

List providers = new ArrayList();
sf.setProviders(providers);
sf.setAddress(ENDPOINT_ADDRESS);

server = sf.create();

但是我不明白在没有Spring的情况下使用CXF的意义。



 类似资料:
  • 我正在公有云(Azure/AWS/Google cloud)中运行一个Kubernetes集群,我有一些非HTTP服务要为用户公开。 对于HTTP服务,Id通常使用Ingress资源通过可寻址的DNS条目公开地公开该服务。 对于非HTTP、基于TCP的服务(例如,诸如PostgreSQL之类的数据库),我应该如何公开这些服务以供公共使用? 我考虑过使用服务,但这要求节点本身可以公开访问(依赖路由到

  • 我正在尝试公开公共IPv6地址上的kubernetes TCP服务。应用程序在IPv4上运行良好,但我无法在IPv6上配置它。问题是这不是HTTP服务。当前服务按类型完成:非标准端口11042上的LoadBalancer。所以我认为它创建了网络负载均衡器。 支持IPv6的文档转发规则如下:目标HTTP代理目标HTTPS代理、目标SSL代理、目标TCP代理,但TCP代理已关闭可使用的端口列表。我也尝

  • 用库伯涅茨-Kafka作为迷你库伯的起点。 这使用StatefulSet和headless服务在集群内进行服务发现。 我们的目标是对外展示各个Kafka经纪人,其内部地址为: 限制是这个外部服务能够专门针对经纪人。 做这件事的正确(或一种可能)方法是什么?是否可以通过< code > Kafka-x . broker . Kafka . SVC . cluster . local:9092 公开外

  • 我试图更多地了解服务在Kubernetes中是如何工作的。以这个示例yaml文件为例。 另外,如果我必须从k8集群中的另一个吊舱B访问吊舱landoopkafka的端口8081,我如何访问它? 太感谢你了。

  • 我创建了一个docker镜像(java Web应用程序),创建了一个包含1个主节点和1个工作节点的kubernetes集群,创建了一个部署和一个服务。所有的资源似乎都运行良好,因为我已经通过“kubectl描述资源资源名”进行了检查。最后,我使用了入口来公开集群之外的服务。入口资源似乎工作正常,因为在描述入口对象时没有错误。但是,在从另一台机器访问浏览器上的主机时,我得到了“您的连接不是私有的”错