`

Spring3jdbc架构整合webservice框架cxf

阅读更多
1.下载cxf全部jar包引入项目
2.src下新建spring-cxf.xml
<?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">
    <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" />
    <bean id="dsst" class="com.dh.dsstinterface.DtInterfaceImpl" />
    <jaxws:endpoint id="dtInterface" implementor="#dsst"   address="/DtInterface" />
  </beans>

3.修改web.xml

<context-param>
        <param-name>contextConfigLocation</param-name>
           <!--spring配置文件放在WEB-INF目录下-->
        <param-value>classpath*:/spring-cxf.xml,classpath*:/applicationContext.xml</param-value>
    </context-param>

<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>

4.新建接口和接口实现

import javax.jws.WebParam;
import javax.jws.WebService;

@WebService 
public interface DtInterface {

/**
* 彩信发送接口
*
* @param emsxml
*            客户端传入XMl
* @return
*         code(标记,0、失败;1成功);message1(出错字段名,成功时为返回短信字段信息);message(描述信息
*         )
*/
public String sendEms(String emsxml);
}

import javax.jws.WebService;
import org.apache.commons.io.FileUtils;
import org.dom4j.DocumentHelper;
import org.dom4j.Document;
import org.dom4j.Element;
import java.util.Iterator;
import java.io.File;
import com.dh.dsstinterface.DsstInterface;
import com.dh.util.DateUtil;
import com.dh.util.FileUtil;
import com.dh.util.SendMessageUtil;
import com.dh.util.Util;


import java.io.File;
import java.net.URL;


/**
* Created by MyEclipse. User: szj Date: 2011-10-12 Time: 09:52 To change this
* template use File | Settings | File Templates.
*/
@WebService
public class DtInterfaceImpl implements DtInterface {

/**
* 彩信发送接口
*
* @param emsxml
*            客户端传入XMl
* @return code(标记,0、失败;1成功);message1(出错字段名,成功时为返回短信字段信息);message(描述信息 )
*/

public String sendEms(String emsxml) {
Document doc = null;
String message = "";
String message1 = "";
int code = 0;
String content = "";
String fileurl="";
String moblienumber = "";
try {
doc = DocumentHelper.parseText(emsxml); // 将字符串转为XML
Element rootElt = doc.getRootElement(); // 获取根节点
Iterator<Element> iter =rootElt.elementIterator("sendems"); // 获取根节点下的子节点sendems
// 遍历节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
moblienumber = recordEle.elementTextTrim("moblienumber"); // 手机号码
if (("").equals(moblienumber) || moblienumber == null) {
message1 = message1 + "moblienumber,";
message = message + "手机号码不可为空,";
}
content = recordEle.elementTextTrim("content"); // 内容
if (("").equals(content) || content == null) { message1 =
message1 + "content,"; message = message + "短信内容不可为空,";
}
    fileurl = recordEle.elementTextTrim("file"); // file1 文件1
}
} catch (Exception ex) {
message = message + "传入xml格式错误,";
}
Object object = new Object();
synchronized (object) {
if (message1 == "") {
code = 1;
try {
boolean b =true;
if (!("").equals(fileurl) || fileurl != null) {
        FileUtil fileUtil=new FileUtil();
File file0=fileUtil.downLoadImg(fileurl);
File[] files = new File[1];
files[0] = file0;
    // b =SendMessageUtil.EmsSend(moblienumber, content, files);
} else{
// b =SendMessageUtil.EmsSend(moblienumber, content, null);
}
if(b){
message = message + "发送成功";
}else{
message = message + "发送失败";
}
} catch (Exception e) {
code = 0;
message = message + "发送失败";
}
} else {
message1 = message1.substring(0, message1.length() - 1);
message = message.substring(0, message.length() - 1);
}
}
String returnxml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><head>"
+ "<code>"
+ code
+ "</code>"
+ "<message1>"
+ message1
+ "</message1>"
+ "<message>"
+ message
+ "</message>"
+ "</head></root>";
return returnxml;
}
}

5.访问http://localhost:8080/项目名/DtInterface?wsdl 可以看到wsdl xml文件则表示webservice服务正常
6.新建测试类
测试方法1.
// 创建WebService客户端代理工厂
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
// 注册WebService接口
factory.setServiceClass(DtInterface.class);
// 设置WebService地址
String url = "http://localhost:8080/dsscinterface/DtInterface";
factory.setAddress(url);
DsstInterface dssi = (DsstInterface) factory.create();
System.out.println("invoke webservice...");
StringBuffer reXML = new StringBuffer();
reXML.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?><root>");
reXML.append("<sendems>");
reXML.append("<moblienumber>18969076865</moblienumber>");
reXML.append("<content>测试短信</content>");
reXML.append("<file>http://www.baidu.com/img/baidu_sylogo1.gif</file>");
reXML.append("</sendems></root>");
System.out.println("message context is:" + dssi.sendEms(reXML.toString()));

测试类2
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"spring-client.xml");
DsstInterface client = (DsstInterface) ctx.getBean("client");
    String result = client.sendEms(reXML.toString());
    System.out.println(result);

spring-client.xml:
<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-2.0.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schema/jaxws.xsd">
      <!-- 这个class的包路径和类名和服务端提供web服务的接口一致-->
    <bean id="client" class="com.dh.dtinterface.DtInterface" factory-bean="clientFactory" factory-method="create"/>
    <bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
     <!-- 这个class的包路径和类名和服务端提供web服务的接口一致-->
     <property name="serviceClass" value="com.dh.dsstinterface.DtInterface"/>
     <!-- 这个address一定要注意,正确的-->
   <property name="address" value="http://127.0.0.1:8080/ems/DtInterface"/>
    </bean>    
</beans>


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics