The*_*tor 6 java rest soap endpoint
有谁知道如何配置它,以便SOAP服务和REST服务可以在应用程序服务器之外使用Jersey(Grizzly)共享同一个端口?
这些服务共享相同的端口但不是相同的基本URL,因此应该能够在该端口上并行运行.但是,有一个端口绑定错误..
所有这些都在自定义服务应用程序中,并且没有web.xml等.
REST服务使用Jersey,Soap服务是在端点上发布的类"ReceptionService".
URI soapUri = URI.create("192.168.0.0:1234\soap\Crm")
URI restUri = URI.create("192.168.0.0:1234\crm")
// START SOAP SERVICE
Object reception = getObjectResource(ReceptionService.class);
Endpoint e = Endpoint.publish(soapUri, reception);
// START REST SERVICE
ResourceConfig rc = new ResourceConfig().packages("company.rest");
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(restUri, rc);
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,Grizzly吐出'java.net.BindException:地址已经在使用:bind'
我的肥皂服务接待设置如下:
@WebService(targetNamespace = "company.crm")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class Reception implements ReceptionService {
... methods
}
Run Code Online (Sandbox Code Playgroud)
我的休息服务课像往常一样注释......
@Path("hello/{username}")
public class Hello { ... }
Run Code Online (Sandbox Code Playgroud)
我在这方面有点新手,任何指针都会受到赞赏.请不要打扰我建议运行应用程序服务器.这不是问题 - 问题是如何解决端口绑定问题而不转移到其他一些Web服务框架?
注意RE BOUNTY:我不能完全忘记这一点
"赏金获胜者将演示如何在同一端点上一起使用Jersey for REST和Java SOAP服务(带注释的JAX-WS).答案不需要更改Rest和Soap带注释的类.但是,HTTP服务器代码更改或接受配置更改以使其正常工作.切换到Jetty或其他应用程序服务器是不可接受的.解决方案必须100%嵌入并使用Java SE和Java Web服务库运行."
如果您使用通用容器(例如 tomcat)作为 Web 服务,那么您可以获取到达同一端口的两个服务的请求。您可以将基于 REST 和 SOAP 的服务部署为应用程序的一部分。容器将接受传入请求,并根据应用程序上下文将它们转发给应用程序。在应用程序 web.xml 中,您可以根据请求 URL 映射配置发送请求的位置。