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
posted @ 2021-01-04 11:28  亚州Asu  阅读(3561)  评论(0编辑  收藏  举报