Java WebService 简单实例(附实例代码)
技术介绍
Java WebService 是一种基于 Java 的网络通信协议,它允许不同的应用程序之间进行数据交换和通信,Java WebService 通常使用 XML 或 JSON 作为数据格式,通过 HTTP 协议进行传输,在本文中,我们将介绍如何使用 Java 创建一个简单的 WebService 服务端和客户端。
创建 WebService 服务端
1、我们需要创建一个接口,定义服务端需要实现的方法,我们可以创建一个名为 GreetingService
的接口,包含一个名为 sayHello
的方法:
public interface GreetingService { String sayHello(String name); }
2、我们需要实现这个接口,在这个例子中,我们可以让 GreetingServiceImpl
实现这个接口:
public class GreetingServiceImpl implements GreetingService { @Override public String sayHello(String name) { return "Hello, " + name + "!"; } }
3、接下来,我们需要创建一个类来部署这个服务端,在这个例子中,我们可以创建一个名为 GreetingServiceServer
的类:
import javax.xml.ws.Endpoint; import java.net.URL; public class GreetingServiceServer { public static void main(String[] args) throws Exception { Endpoint.publish("http://localhost:8080/ws/greeting", new GreetingServiceImpl()); System.out.println("WebService 已启动"); } }
4、我们需要编译并运行这个服务端,在命令行中输入以下命令:
javac -d bin src/*.java java com.example.GreetingServiceServer
这将在端口 8080
上启动一个 WebService 服务端。
创建 WebService 客户端
1、在客户端,我们需要创建一个类来调用服务端的方法,在这个例子中,我们可以创建一个名为 GreetingServiceClient
的类:
import javax.xml.namespace.QName; import javax.xml.ws.Service; import java.net.URL; import java.util.concurrent.Future; import com.example.GreetingService; // 注意这里的包名要与服务端保持一致 import com.example.GreetingServicePortType; // 注意这里的类名要与服务端保持一致 import com.example.GetHelloResponse; // 注意这里的类名要与服务端保持一致 import com.example.GetHelloResponseHandler; // 注意这里的类名要与服务端保持一致 public class GreetingServiceClient { public static void main(String[] args) throws Exception { URL wsdlUrl = new URL("http://localhost:8080/ws/greeting?wsdl"); // 注意这里的地址要与服务端保持一致 QName serviceName = new QName("http://example.com/", "GreetingService"); // 注意这里的命名空间要与服务端保持一致 Service service = Service.create(wsdlUrl, serviceName); // 注意这里的 WSDL URL 要与服务端保持一致,以及命名空间要与服务端保持一致 GreetingServicePortType port = service.getPort(GreetingServicePortType.class); // 注意这里的类名要与服务端保持一致 BindingProvider bindingProvider = (BindingProvider) port; // 注意这里的类型转换要正确,因为服务端可能使用了自定义的绑定提供者实现 bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:8080/ws/greeting"); // 注意这里的地址要与服务端保持一致 Future<GetHelloResponse> responseFuture = port.getHelloAsync("World"); // 注意这里的参数要与服务端保持一致,以及方法名要正确(根据实际情况修改) GetHelloResponse response = responseFuture.get(); // 注意这里可能需要处理异步调用的结果,以避免阻塞主线程 System.out.println("Response: " + response); // 注意这里需要根据实际的数据格式进行解析和输出,以便查看结果是否正确 } }
2、我们需要编译并运行这个客户端,在命令行中输入以下命令:
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/194179.html