我试图在使用apache版本2.2.12编写的web服务中添加基于UsernameToken的安全性。
一旦我在weblogic中部署了我的应用程序,我将获得两个URL,我可以从其中访问WSDL。
我正在尝试使用soapUI客户机来使用webservice,问题是如果我使用第二个URL,一切都很好,我的ejb被正确注入等等,但是WSS4JInterceptor根本没有被调用。
如果我将soapUI中的URL更改为使用第一个URL,那么就会调用Interceptor,但是我的服务不会被注入,而且作为服务对象,我将获得NULL。
我已经在我的春季配置文件中配置了WSS4JInterceptor。我需要在每个请求之前调用这个拦截器,这样我就可以从请求头验证用户令牌。
这是我的beans.xml
<bean id="wss4jInConfiguration" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<property name="properties">
<map>
<entry key="action" value="UsernameToken Timestamp"/>
<entry key="passwordType" value="PasswordText" />
<entry>
<key>
<value>passwordCallbackRef</value>
</key>
<ref bean="passwordCallback"/>
</entry>
</map>
</property>
</bean>
<bean id="passwordCallback" class="my.interceptors.callbacks.handlers.PasswordCallbackHandler"/>
<jaxws:endpoint id="myservice" implementor="my.sample.application.MyServiceImpl"
address="/MyService">
<jaxws:ininterceptors>
<ref bean="wss4jInConfiguration" />
</jaxws:ininterceptors>
</jaxws:endpoint>这是我的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:WEB-INF/beans.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<display-name>CXF Servlet</display-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>我目前无法访问我的WSDL,但是下面的标记如下所示。
<soap:address location="http://localhost:8080/MyServiceSoapPort" />任何指针我做错了什么。
注意:我的服务运行良好,不需要回调URL而不使用/ services /
发布于 2011-10-31 23:45:27
我的猜测是,Web服务实际上部署了两次,一次是由beans.xml文件中配置的CXF部署的,一次是由Weblogic作为JavaEE5Web服务部署的。CXF不执行注入(我假设您使用的是@EJB),而且Weblogic对您的WS-安全性配置一无所知。
https://stackoverflow.com/questions/7864591
复制相似问题