微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebService整合Spring

WebService with Spring 
一:创建服务器端
1.1:web.xml 配置
    <!--   配置Spring的ContextLoaderListener监听器-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/cxf-servlet.xml</param-value>
  </context-param>
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
   
    <!-- 配置CXFServlet -->
  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
  </servlet>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/*</url-pattern>
1.2:代码编写
1.2.1//编写接口
package demo.cxf.service;

import javax.jws.WebService;

@WebService(注释一定要写)
public interface Login {
public String login(String name,String password);
}
2.2.2//实现接口方法
package demo.cxf.service;

import javax.jws.WebService;

@WebService(endpointInterface="demo.cxf.service.Login",serviceName="Login")(注释一定要写)
public class LoginImpl implements Login {

@Override
public String login(String name,String password) {
String result = "登陆CXF服务端成功!";
if(!"cxf".equalsIgnoreCase(name)||
!"cxf".equalsIgnoreCase(password)){
result = "用户名密码不正确,请重新登陆!";
}
return result;
}
}
1.3:编写Spring配置文件  
<?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">

  <!-- 引入cxf的两个配置文件 -->
  <import resource="classpath:meta-inf/cxf/cxf.xml"/>
  <import resource="classpath:meta-inf/cxf/cxf-servlet.xml"/>
   
  <!-- 通过<jaxw:endpoint创建一个服务终端 -->
  <!-- implementor:服务端实现类 -->
  <!-- id:spring上下文中的bean的id -->
  <!--address:服务请求地址 -->  
  <!-- 
  <jaxws:endpoint id="helloWorld" 
  implementor="demo.spring.service.HelloWorldImpl" 
  address="/HelloWorld">
  </jaxws:endpoint>
    -->
  <jaxws:endpoint id="login" 
  implementor="demo.cxf.service.LoginImpl" 
  address="/Login">
  </jaxws:endpoint>
</beans>
1.4:启动服务器   http://localhost:8088/mycxf/Login?wsdl
  如果看到配置文件---------就表示服务端配置成功.
 在Eclipse里打包就可以用啦 Export jar 本文中Spring 配置文件为 cxf-servlet.xml
 
  二:创建客户端(有两种方法:一种是不要Spring管理。一种需要Spring管理)
  2.1:导入相应的包,包括上面打的包
  2.2:不要Spring管理 代码
  package demo.cxf.client;

import org.apache.cxf.jaxws.JaxWsProxyfactorybean;

import demo.cxf.service.Login;

public class CXFClient {

public static void main(String[] args) {
JaxWsProxyfactorybean jwpFactory = new JaxWsProxyfactorybean();
jwpFactory.setAddress("http://localhost:8088/mycxf/Login?wsdl");
jwpFactory.setServiceClass(Login.class);
Login login = (Login)jwpFactory.create();
String result = login.login("cxf","cxf");
System.out.println("登陆结果:"+result);
}
2.3:需要Spring管理的(web.xml不要在配置CXF启动啦)
2.3.1 配置Spring配置文件(客户端配置有2种方法
  <?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:client
    id="helloClient"
    serviceClass="demo.cxf.service.Login" 只能 填写Login接口代理类
    address="http://localhost:8088/mycxf/Login"
  ></jaxws:client>
   
  <!-- 配置客户端代码方法二 -->
   
  <bean id="client" class="demo.cxf.service.Login"// 填Login接口和LoginImpl都可以
    factory-bean="clientFactory" factory-method="create">
  </bean>
  <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyfactorybean">
    <property name="serviceClass" value="demo.cxf.service.Login"></property> 只能填写Login接口代理类
    <property name="address" value="http://localhost:8088/mycxf/Login"></property>
  </bean>
   
</beans>
  2.3.2 编写代码
  package demo.spring.client;

import org.springframework.context.support.ClasspathXmlApplicationC ontext;

import demo.cxf.service.Login;
import demo.spring.service.HelloWorld;

public class Client {

public static void main(String[] args) {
ClasspathXmlApplicationC ontext context
      = new ClasspathXmlApplicationC ontext("cxf-servlet.xml");
Login client = (Login)context.getBean("helloClient");
String response = client.login("cxf","cxf");
System.out.println("Response:"+response);
System.exit(0);
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐