有谁知道如何配置它,以便 SOAP 服务和 REST 服务可以在应用程序服务器之外使用 Jersey(Grizzly)共享同一个端口?
- 我的肥皂服务位于 www.someurl.com:port/soap/crm
- 我的休息服务在 www.someurl.com:port/crm
这些服务共享相同的端口但不同的基本 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);
当我尝试这个时,Grizzly 吐出'java.net.BindException:地址已在使用:绑定'
我的肥皂服务接待是这样设置的:
@WebService(targetNamespace = "company.crm")
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class Reception implements ReceptionService {
... methods
}
我的休息服务类像往常一样注释...
@Path("hello/{username}")
public class Hello { ... }
我在这方面有点新手,任何指针都将不胜感激。请不要打扰建议我运行应用程序服务器。这不是这里的问题——问题是我如何绕过端口绑定问题而不转移到其他一些 web 服务框架?
注意RE BOUNTY:我不能重复这个
“赏金获胜者将演示如何在同一端点上同时使用 Jersey for REST 和 Java SOAP 服务(带注释的 JAX-WS)。答案不需要更改 Rest 和 Soap 注释类。但是,HTTP 服务器代码更改或配置更改使其工作是可以接受的。切换到 Jetty 或其他一些应用程序服务器是不可接受的解决方案必须 100% 嵌入并使用 Java SE 和 Java Web 服务库运行。