• webservice整合spring cxf


    下载cxf包,把他里面的包都添加进lib文件夹中。

    创建一个接口。添加@WebService注解

    @WebService
    public interface HelloWorld {
    
        String sayHi(@WebParam(name="text")String text);
        String sayHiToUser(User user);
        String[] SayHiToUserList(List<User> userList);
    }

    创建接口的实现类,也添加@WebService注解,给他一个名称:boy

    @WebService(serviceName="boy")
    public class HelloWorldImpl implements HelloWorld {
    
        Map<Integer, User> users = new LinkedHashMap<Integer, User>();
    
        public String sayHi(String text) {
            return "Hello " + text;
        }
    
        public String sayHiToUser(User user) {
            users.put(users.size() + 1, user);
            return "Hello " + user.getName();
        }
    
        public String[] SayHiToUserList(List<User> userList) {
            String[] result = new String[userList.size()];
            int i = 0;
            for (User u : userList) {
                result[i] = "Hello " + u.getName();
                i++;
            }
            return result;
        }
    
    }

    User实体类:

    public class User {
    
        private String name;
        private int age;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        
    }

    服务端代码:

    public class webServiceApp {
          public static void main(String[] args) {
              System.out.println("web service start");
              HelloWorldImpl implementor= new HelloWorldImpl();
              String address="http://localhost:8000/helloWorld";
              Endpoint.publish(address, implementor);
              System.out.println("web service started");
     }
    }

    客户端代码:有集成spring和没集成的

    public class HelloWorldClient {
        public static void main(String[] args) {
            
            //集成spring和cxf
            ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            HelloWorld client1 = (HelloWorld) context.getBean("client1");
            User user1 = new User();
            user1.setName("Tony");
            user1.setAge(20);
            User user2 = new User();
            user2.setName("freeman");
            user2.setAge(50);
            List<User> userList = new ArrayList<User>();
            userList.add(user1);
            userList.add(user2);
            // String[] res = client1.SayHiToUserList(userList);
            // System.out.println(res[0]);
            // System.out.println(res[1]);
            String sayHi = client1.sayHi("good");
            System.out.println(sayHi);
            
            // HelloWorld2 client2 = (HelloWorld2) context.getBean("client2");
            // User user3 = new User();
            // user3.setName("Jerry");
            // user3.setAge(20);
            // String user = client2.sayHiToUser(user3);
            // System.out.println(user);
            
            
            //没有集成
            JaxWsProxyFactoryBean svr = new JaxWsProxyFactoryBean();
            svr.setServiceClass(HelloWorld.class);
            svr.setAddress("http://localhost:8000/helloWorld");
            HelloWorld hw = (HelloWorld) svr.create();
            User user = new User();
            user.setName("Tony");
            System.out.println(hw.sayHi("ffff"));
    
        
        }
    }

    打印的结果是:

    Hello good

    Hello ffff

    web.xml的配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     <display-name>cxf</display-name>
     <welcome-file-list>
          <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>
    
    
                    <context-param>
                              <param-name>contextConfigLocation</param-name>
                              <param-value>classpath*:applicationContext.xml</param-value>
                     </context-param>
     
                  <listener>
                          <listener-class>
                                  org.springframework.web.context.ContextLoaderListener
                          </listener-class>
                  </listener>
    
                    <listener>
                        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
                    </listener>
     
    
                  <servlet>
                         <servlet-name>CXFServlet</servlet-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>/*</url-pattern>
                   </servlet-mapping>
    </web-app>

    applicationContext.xml的配置,这个文件是放在资源文件resources下的,他在项目中的路径是在classes里面的。我在这里配置了两个站点。都是可以的。

    <?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"
        
        xsi:schemaLocation="
                           http://www.springframework.org/schema/beans
    
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
        
        
        <!-- 发布一个站点 -->
        <jaxws:endpoint id="boy" implementor="com.cs.webservice.HelloWorldImpl"
            address="/aaa" />
    
        <bean id="client1" class="com.cs.webservice.HelloWorld"
            factory-bean="clientFactory1" factory-method="create" />
    
        <bean id="clientFactory1" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
            <property name="serviceClass" value="com.cs.webservice.HelloWorld" />
            <property name="address" value="http://localhost:8000/helloWorld/aaa" />
        </bean>
        
        <!-- 第二个站点 -->
    <!--     <jaxws:endpoint id="orange" implementor="com.cs.webservice.HelloWorldImpl2"
            address="/bbb" />
    
        <bean id="client2" class="com.cs.webservice.HelloWorld2"
            factory-bean="clientFactory2" factory-method="create" />
    
        <bean id="clientFactory2" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
            <property name="serviceClass" value="com.cs.webservice.HelloWorld2" />
            <property name="address" value="http://localhost:8080/cxfwebservicespring/bbb" />
        </bean> -->
    </beans>
    <property name="address" value="http://localhost:8000/helloWorld/aaa" />
    aaa前面的路径必须与发布的String address="http://localhost:8000/helloWorld";路径相同。
  • 相关阅读:
    poj 1860 Currency Exchange(最短路径的应用)
    poj 2965 The Pilots Brothers' refrigerator
    zoj 1827 the game of 31 (有限制的博弈论)
    poj 3295 Tautology (构造法)
    poj 1753 Flip Game(枚举)
    poj 2109 (贪心)
    poj 1328(贪心)
    Qt 对单个控件美化
    Qt 4基础
    Bash Shell
  • 原文地址:https://www.cnblogs.com/hjy9420/p/4270173.html
Copyright © 2020-2023  润新知