day63-webservice 07.07.如何修改cxf配置文件路径

为什么第一次访问http://localhost:8080/cxf-web-server/service有点慢?证明第一次访问的时候CXFServlet被初始化了被加载了.一般是让CXFServlet随着服务器启动的时候加载,而不让它进行访问的时候加载.如果改成启动的时候加载CXFServlet就变成启动服务器的时候慢了.

<!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>
package com.rl.cxf.web.client;

import com.rl.web.server.HelloService;
import com.rl.web.server.HelloServiceService;

public class WebClient {
    public static void main(String[] args) {
        HelloServiceService hss = new HelloServiceService();
        HelloService hs = hss.getHelloServicePort();
        String result = hs.sayHello("李四");
        System.out.println(result);
    }
}
package com.rl.web.server;

import javax.jws.WebService;

import org.springframework.web.context.ContextLoaderListener;


@WebService //所有的webservice服务类都要加@webservice,接口的形式加在接口上

public class HelloService {
   public String sayHello(String name){
       //ContextLoaderListener
       return name + " hello";
   }
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd
            http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
            http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">
    <!-- 引入CXF Bean定义如下,早期的版本中使用 -->
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    <!-- 
       address:tomcat的host http://ip:port/projectName/service/后面的一端路径
       implementor:指定具体的服务的类
     -->
     <jaxws:endpoint id="hello" address="/hello" implementor="com.rl.web.server.HelloService"> 
        <!-- 输入拦截器,打印输入的消息 -->
        <jaxws:inInterceptors>
          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
        </jaxws:inInterceptors>
        <jaxws:outInterceptors>
           <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
        </jaxws:outInterceptors>
     </jaxws:endpoint>
</beans>
<!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>
   <!-- 使用Spring的监听器 -->
   <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class><!-- 初始化Spring的容器,cxf.xml本身就是一个Spring的容器.可以把cxf.xml作为Spring的容器进行加载. --> 
      <!-- 能加载Spring文件的类,这个类叫什么? -->
   </listener>
   <context-param>
      <param-name>contextConfigLocation</param-name><!-- param-name不能再指定config-location,而是要指定ContextLoaderListener里面读取Spring文件的那个Key -->
      <param-value>classpath:cxf.xml</param-value>
   </context-param>
   <servlet>
       <servlet-name>cxf</servlet-name>
       <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
       <!--  
       <init-param>
          <param-name>config-location</param-name>
          <param-value>classpath:cxf.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
       -->
   </servlet>
   <servlet-mapping>
       <servlet-name>cxf</servlet-name>
       <url-pattern>/service/*</url-pattern>  <!-- 拦截这种请求 -->
   </servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:jaxrs="http://cxf.apache.org/jaxrs" xmlns:cxf="http://cxf.apache.org/core"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
          http://www.springframework.org/schema/beans/spring-beans.xsd
            http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd
            http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
            http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd">
    <!-- 引入CXF Bean定义如下,早期的版本中使用 -->
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    <!-- 
       address:tomcat的host http://ip:port/projectName/service/后面的一端路径
       implementor:指定具体的服务的类
     -->
     <jaxws:endpoint id="hello" address="/hello" implementor="com.rl.web.server.HelloService"> 
        <!-- 输入拦截器,打印输入的消息 -->
        <jaxws:inInterceptors>
          <bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
        </jaxws:inInterceptors>
        <jaxws:outInterceptors>
           <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
        </jaxws:outInterceptors>
     </jaxws:endpoint>
</beans>
<?xml version="1.0" encoding="UTF-8"?>
   <web-app id="WebApp_ID" version="2.5" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   <!-- 使用Spring的监听器 -->
   <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class><!-- 初始化Spring的容器,cxf.xml本身就是一个Spring的容器.可以把cxf.xml作为Spring的容器进行加载. --> 
      <!-- 能加载Spring文件的类,这个类叫什么? -->
   </listener>
   <context-param>
      <param-name>contextConfigLocation</param-name><!-- param-name不能再指定config-location,而是要指定ContextLoaderListener里面读取Spring文件的那个Key -->
      <param-value>classpath:cxf.xml</param-value>
   </context-param>
   <servlet>
       <servlet-name>cxf</servlet-name>
       <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
       <!--  
       <init-param>
          <param-name>config-location</param-name>
          <param-value>classpath:cxf.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
       -->
   </servlet>
   <servlet-mapping>
       <servlet-name>cxf</servlet-name>
       <url-pattern>/service/*</url-pattern>  <!-- 拦截这种请求 -->
   </servlet-mapping>
</web-app>
原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/7670655.html