WebService接口及案例
什么是WebService
WebService是一种跨编程语言和跨操作系统平台的远程调用技术。是通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。
- SOAP (简易对象访问协议);
- UDDI (通用描述、发现及整合);
- WSDL (Web services 描述语言)。
比如现在需要使用第三方公司的短信服务,使用WebService来调用它的服务,只需要第三方公司提供一个接口调用文档和WebService地址,就能根据文档地址编程去调用它开放的短信服务,发送短信。
基础的 Web Services平台是 XML + HTTP。HTTP 协议是最常用的因特网协议。XML 提供了一种可用于不同的平台和编程语言之间的语言。
建立服务端
首先创建新的工程。
再创建一个新的模块即一个简单的java项目。
然后创建三个包,分布是写接口、接口实现类、入口类的代码(手动删除系统自动生成的example代码)。
代码如下:
package com.asu.service;
import javax.jws.WebService;
@WebService
public interface IHello {
public String sayHello(String name);
}
package com.asu.impl;
import com.asu.service.IHello;
import javax.jws.WebService;
@WebService
public class HelloImpl implements IHello {
public String sayHello(String name) {
String strSay = "Hello"+name; return strSay;
}
}
package com.asu.main;
import com.asu.impl.HelloImpl;
import javax.xml.ws.Endpoint;
public class WebService {
public static void main(String[] args) {
String address = "http://127.0.0.1:9001/Service/ServiceTest";
Endpoint.publish(address, new HelloImpl());
System.out.println("service success");
}
}
右键运行WebService.java的main主方法(之后一直保持运行状态,不要关闭)。
在浏览器的地址栏中输入WebService入口类文件中定义的address地址(http://127.0.0.1:9001/Service/ServiceTest?wsdl),注意,要在地址后面加上 “?wsdl”。那么如果出现了下图类似的界面,那么就说明WebService发布成功。
建立客户端
接下来,我们就要实现在本地调用这个远程接口。
在本地再新建一个普通的 Java Project 项目。
在弹出的选项框中的填写上一步在浏览器地址栏中填写的URL。
点击完成,系统会自动为我们创建一些必要的类(手动删除系统自动生成的example代码)。
红框圈起来的是系统创建的类,我们需要自己在创建一个类(WebServiceClientTest.java)来实现这些调用这些新创建的类,以到达调用接口的目的。
代码如下:
package com;
public class WebServiceClientTest {
public static void main(String[] args) throws Exception {
HelloImpl test = new HelloImplServiceLocator().getHelloImplPort();
String message = test.sayHello("调用者");
System.out.println(message);
}
}
结果
运行结果如下:
log4j报错解决办法(百度):在配置文件log4j.properties(文件名必须这个,放在resources目录) 全选粘贴如下代码:
# Global logging configuration 开发时候建议使用 debuglog4j.rootLogger=DEBUG, stdout# Console
output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n