zdd

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  2 随笔 :: 0 文章 :: 5 评论 :: 0 Trackbacks
   我的Web Services服务已经可以了,即:http://127.0.0.1/datacenter/zddservices/GetEJFLService?wsdl 已经可以显示。但是当我调用这个方法时就报错:
org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Fault
org.codehaus.xfire.fault.XFireFault: Fault
    at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:
89)
    at org.codehaus.xfire.client.Client.invoke(Client.java:
267)
    at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:
77)
    at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:
57)
    at $Proxy0.getEJFLxml(Unknown Source)
    at com.datacenter.getxml.getejflxml(getxml.java:
25)
    at com.datacenter.getxml.main(getxml.java:
14)
Caused by: java.lang.NullPointerException
    at org.codehaus.xfire.transport.http.CommonsHttpMessageSender.hasResponse(CommonsHttpMessageSender.java:
149)
    at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:
175)
    at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:
82)
    at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:
26)
    at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:
98)
    at org.codehaus.xfire.client.Client.invoke(Client.java:
263)

可能的原因:我的这个服务必须登录才能访问:http://127.0.0.1/datacenter/zddservices/GetEJFLService?wsdl.有一个验证的过程。我对这个验证的东西不是很懂!所以请大家帮忙看看。下面是验证的xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version
="2.4">
    
<display-name>Central Authentication System (CAS) 3.0</display-name>
    
<context-param>
        
<param-name>contextConfigLocation</param-name>
        
<param-value>
            
/WEB-INF/spring-configuration/*.xml
            /WEB-INF/deployerConfigContext.xml
        </param-value>
    </context-param>

    <!-- 
        place this into the contextConfigLocation to enable remote services
        /WEB-INF/remoteServices.xml,
        classpath:org/codehaus/xfire/spring/xfire.xml
        
        place this into the contextConfigLocation to enable the event publishing
    -->

    <!--
        - Location of the Log4J config file, for initialization and refresh checks.
        - Applied by Log4jConfigListener.
    -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>
    
    <context-param>
        <param-name>log4jExposeWebAppRoot</param-name>
        <param-value>false</param-value>
    </context-param>
    
    <filter>
        <filter-name>CAS Client Info Logging Filter</filter-name>
        <filter-class>org.inspektr.common.web.ClientInfoThreadLocalFilter</filter-class>
    </filter>
    
    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <filter-mapping>
      <filter-name>springSecurityFilterChain</filter-name>
      <url-pattern>/services/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>CAS Client Info Logging Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--
        - Configures Log4J for this web app.
        - As this context specifies a context-param "log4jConfigLocation", its file path
        - is used to load the Log4J configuration, including periodic refresh checks.
        -
        - Would fall back to default Log4J initialization (non-refreshing) if no special
        - context-params are given.
        -
        - Exports a "web app root key", i.e. a system property that specifies the root
        - directory of this web app, for usage in log file paths.
        - This web app specifies "cas.root" (see log4j.properties file).
    -->
    <!-- Leave the listener commented-out if using JBoss -->
    <listener>
        <listener-class>
            org.springframework.web.util.Log4jConfigListener
        </listener-class>
    </listener>

    <!--
        - Loads the CAS ApplicationContext.  
        - The deployer choice here is how to handle Throwables thrown by Spring's 
        - ContextLoaderListener.  The Spring ContextLoaderListener will throw an exception when the
        - application context cannot be loaded, say because the bean XML files are not valid XML or do not
        - refer to real classes and properties or because a bean configured via Spring throws an exception
        - at construction, property setting, or on an afterPropertiesSet() lifecycle method.
        -
        - If you'd like these errors to be fatal and prevent the CAS servlet context from loading at all,
        - use org.springframework.web.context.ContextLoaderListener.
        -
        - If you'd like these errors to result in all requests for CAS getting a "CAS is Unavailable" response, 
        - use org.jasig.cas.web.init.SafeContextLoaderListener
    -->
    <listener>
        <listener-class>
            org.jasig.cas.web.init.SafeContextLoaderListener
        </listener-class>
    </listener>

    <!--
        - This is the Spring dispatcher servlet which delegates all requests to the 
        - Spring WebMVC controllers as configured in cas-servlet.xml.
        -   
        - The choice made above about how to handle a broken ApplicationContext at 
        - context initialization applies here as well, sicne this servlet is load-on-startup.
        -
        - If you'd like these errors to be fatal and prevent the CAS servlet from loading at all,
        - use org.springframework.web.servlet.DispatcherServlet.
        -
        - If you'd like these errors to result in all requests for CAS getting a "CAS is Unavailable" response, 
        - use org.jasig.cas.web.init.SafeDispatcherServlet
    -->
    <servlet>
        <servlet-name>cas</servlet-name>
        <servlet-class>
            org.jasig.cas.web.init.SafeDispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>publishContext</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/logout</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/validate</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/serviceValidate</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/samlValidate</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/proxy</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/proxyValidate</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/CentralAuthenticationService</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/add.html</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/logout.html</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/loggedOut.html</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/manage.html</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/edit.html</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/openid/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/viewCurrentStatistics.html</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/viewStatistics.html</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/viewLogRequests.html</url-pattern>
    </servlet-mapping>
    
    <servlet-mapping>
        <servlet-name>cas</servlet-name>
        <url-pattern>/services/deleteRegisteredService.html</url-pattern>
    </servlet-mapping>

    <session-config>
        <!-- Default to 5 minute session timeouts -->
        <session-timeout>5</session-timeout>
    </session-config>

    <error-page>
        <exception-type>org.springframework.context.ApplicationContextException</exception-type>
        <location>/WEB-INF/view/jsp/brokenContext.jsp</location>
    </error-page>
<!--
    <error-page>
        <exception-type>java.lang.Exception</exception-type>
        <location>/WEB-INF/view/jsp/errors.jsp</location>
    </error-page>
-->
    <error-page>
        <error-code>404</error-code>
        <location>/</location>
    </error-page>
    
    <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
      </welcome-file-list> 
</web-app>
posted on 2009-12-28 17:53 肖东 阅读(1041) 评论(1)  编辑  收藏

评论

# re: Web Services 求助!!! 2009-12-29 10:09 肖东
看来遇到问题还是要从根源入手啊!上面的问题解决了!告诉大家解决的办法,希望有所帮助:
1、无论如何,请求一定会经过Servlet的,而我的框架是spring+struts的。spring配置文件中有一个是关于CAS验证的。其中的一段配置如下:
<security:http entry-point-ref="casProcessingFilterEntryPoint">
<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:logout invalidate-session="true" logout-success-url="/cas-logout.jsp"/>
</security:http>
大家注意这个属性 pattern="/**" 它的配置的意思就是所有的请求都要经过CAS验证。而我把这个属性随便的修改一下,让所有的请求都不经过验证,问题就解决了!
说明:其实最好的解决办法是让Web Services的请求也经过CAS验证,但是如何配置还没有解决。以后解决会告诉大家  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: