再写一次WEBservice的例子,以及多种方式调用

本文详细介绍了如何使用Apache CXF部署WebService,包括配置web.xml和cxf-servlet.xml文件,定义服务接口和服务实现类,并展示了三种调用WebService的方法。
部署运行你感兴趣的模型镜像
部署webservice的服务端
web.xml


<!-- webservice服务端 -->
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>



cxf-servlet.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"
xmlns:context="http://www.springframework.org/schema/context"
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
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">



<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<!-- 默认扫描的包路径 -->
<context:component-scan base-package="com.ishopping.webservice.*" />

<jaxws:endpoint id="helloWorld" implementor="#hello" address="/HelloWorld" />
<jaxws:endpoint id="wsMyorder" implementor="#myorder" address="/Myorder" />

</beans>

服务器接口

package com.ishopping.webservice.service;

import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;


@WebService
public interface HelloWorld {
public String say(String name);
public String getText();
}




服务实现类



package com.ishopping.webservice.impl;

import javax.jws.WebService;
import org.springframework.stereotype.Component;
import com.ishopping.webservice.service.HelloWorld;


@Component("hello")//这个和cxf-servlet.xml中implementor="#hello" 关联
@WebService(endpointInterface = "com.ishopping.webservice.service.HelloWorld")//接口路径
public class HelloWorldImpl implements HelloWorld{
public TestDao testDao;

public String say(String name) {


return name;
}

@Override
public String getText() {
System.out.println("fffff");
return "成功";
}


}


启动服务器,如果不出意外的话将会看到这个

[img]http://dl2.iteye.com/upload/attachment/0091/8650/48ed4e1f-58fb-3fc5-9ec2-255395836904.jpg[/img]

输入路径


然后客户端调用
第一种通过spring来调用



//读取配置文件
ApplicationContext ctx =
new ClassPathXmlApplicationContext("ClientBeans.xml");
//get到接口类型并调用
HelloWorld hello = (HelloWorld)ctx.getBean("helloClient");
String str = hello.getText();
System.err.println(str);




<?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">
<jaxws:client id="helloClient"
<!--服务地址-->
address="http://www.goudzd.com:8088/goudzd/webservice/Helloworld"
<!--客服端调用类-->
serviceClass="com.ishopping.webservice.service.HelloWorld">
</jaxws:client>
</beans>



[color=red]注意的是HelooWorld接口必须和服务器路径一致[/color]

第二种:通过CXF调用

commons-logging-1.1.1.jar
cxf-2.3.3.jar
servlet-api.jar
wsdl4j-1.6.2.jar
XmlSchema-1.4.7.jar

需要用到的包


JaxWsProxyFactoryBean soapFactoryBean = new JaxWsProxyFactoryBean();
soapFactoryBean.setAddress("http://www.goudzd.com:8088/goudzd/webservice/HelloWorld?wsdl");
soapFactoryBean.setServiceClass(HelloWorld.class);
HelloWorld order =(HelloWorld) soapFactoryBean.create();
String str = order.say("dddddddd");



[color=red]注意的是HelooWorld接口必须和服务器路径一致[/color]

第三种 通过soap链接
需要用到的包

ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar


注意红框的地方

[img]http://dl2.iteye.com/upload/attachment/0091/8652/d9cb9f87-abcf-33c0-8d35-8ada9735dbf5.jpg[/img]



//里面地址对应上面图片的namespace
SoapObject request = new SoapObject("http://service.webservice.ishopping.com/", "getText");
//这个是配置参数
// request.addProperty("Fahrenheit",txtFar.getText().toString());

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
try {
//对应图片上的soap:address
HttpTransportSE androidHttpTransport = new HttpTransportSE("http://10.0.98.19:8088/goudzd/webservice/HelloWorld");
//call的第一个参数对应图片上的soapAction=""
androidHttpTransport.call("", envelope);
SoapObject result = (SoapObject)envelope.bodyIn;
//这里我获取第一个数据
System.out.println(result.getProperty(0).toString());
} catch (Exception e) {
e.printStackTrace();
}




下面是需要的包

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值