在JBOSS 7中通过HTTPS发布wsdl

时间:2014-03-25 13:32:23

标签: java web-services soap jboss wsdl

关于如何通过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目前正确配置为执行双向身份验证

1 个答案:

答案 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服务做的完全相同