我是一名SOAP新手,正在构建我的第一个Axis2(v 1.6.2)Web服务。我从一个同事那里复制了一个很小的测试服务,如果我使用http而不是https,它就会运行。我的同事没有这个问题。
我收到的错误是“javax.servlet.ServletException:https被禁止”。我的Axis2.xml文件包含以下内容:
<transportReceiver name="http" class="org.apache.axis2.transport.http.AxisServletListener">
<parameter name="port">8080</parameter>
</transportReceiver>
<transportReceiver name="https" class="org.apache.axis2.transport.http.AxisServletListener">
<parameter name="port">8443</parameter>
</transportReceiver>
我正在测试localhost,JRE 6.1和Tomcat 7.0.25。我的同事(能够使用https)正在使用Websphere 6和Axis2 v.1.6.0,因此这可能是appserver或Axis2版本问题。我们不使用Maven。
我的Tomcat端口为http:8080,https:8443和AJP:8009。
任何帮助解决此https错误都将不胜感激。
更新:尚未解决,但似乎与以下相似或相同: https://stackoverflow.com/questions/13808029/http-is-forbidden-exception-while-accessing-the-axis-2-webservice
答案 0 :(得分:1)
我发现了原因。对于AxisServlet servlet,我在web.xml文件中有以下条目。我的同事也有参赛作品,但是她的评论已被评论出来了。此条目在服务器启动时导致“找不到文件”错误。评论这个解决了这个问题。
<init-param>
<param-name>axis2.xml.path</param-name>
<param-value>/WEB-INF/conf/axis2.xml</param-value>
</init-param>
linuxlewis,谢谢你的回复!
答案 1 :(得分:0)
我可以想到两个可能的问题。
可能位于Web服务前面的IIS / Apache服务器正在使用某种域限制。使用mod_authz_host,您可以根据其域
如果您使用Java从服务器访问Web服务,则可能需要在JDK security cacerts文件中安装与Web服务关联的证书。如果您的同事在websphere中工作,他们可能已经安装了证书