关于如何通过https发布WSDL似乎有很多错误信息,我正在寻求2014年的一个authoratative答案。我所拥有的是JBoss 7 + Java 7 + JAXWS,我试图发布一个WSDL通过https。我目前拥有的代码与此类似:
接口
@WebService
@SOAPBinding(style=Style.DOCUMENT, use = Use.LITERAL)
public interface MyService{
@WebMethod(action="https://service/getItem")
public String getItem(String itemId);
}
IMPL
@WebService(endpointInterface="com.example.MyService")
public class MyServiceImpl implements MyService{
@Override
public String getItem(String itemId){
return "foo";
}
}
出版商:
public class Publisher{
public static void main(String[] args){
Endpoint.publish("http://localhost:8888/services/ws/MyService", new MyServiceImpl());
}
}
现在,当我查看JBoss管理控制台时,我可以正确地看到终点。我想要做的是通过HTTPS公开它。 JBoss目前正确配置为执行双向身份验证
答案 0 :(得分:0)
如果你的意思是通过https公开SOAP Web服务,对我来说,它通过在standalone.xml配置中配置https来工作(参见例如this guide)
如果您只想限制对https的访问,那么在定义Web服务的应用程序的web.xml中,您必须指定安全约束:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>MyApp</display-name>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>SECURE</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
</web-app>
这与我为REST Web服务做的完全相同