赞
踩
目录
需要我方提供webservice接口,使用方调用时传递数据,保存到我方的数据库中,
1)File>>new>>project
2)填写项目名,
3)项目初始结构(有一个自动生成的Java类–HelloWorld)
4)生成WSDL文件(右键文件>>Webservice>>Generate..)
会生成wsdl文件
5)配置tomcat
6)到这个时候,然后可以运行起服务了,但是访问服务页面时还是会报错。因为还要给部署的 Artifact 添加 Apache Axis 包的依赖。
选择File> Project Structure>>Artifacts。
会到在新的警告信息。点击警告信息右侧的Fix…按钮。
在弹出菜单里选择Add ‘JAX-WS-Apache Axis’ to the artifact。
修复完成后警告消失。
7)查看:在浏览器里输入:
http://localhost:8080/servicedome_war_exploded/services
点击HelloWorld(wsdl)能正常查看wsdl的内容则发布成功。服务器端完成。
8)编写客户端代码调用服务
- package example;
-
- import org.apache.axis.client.Call;
- import org.apache.axis.client.Service;
- import org.apache.axis.utils.StringUtils;
-
-
- public class CalculateClient {
-
- public static void main(String[] args) {
- // 指定调用WebService的URL(这里是我们发布后点击HelloWorld)
- String url = "http://localhost:8080/servicedome_war_exploded/services/HelloWorld?wsdl";
- CalculateClient calculateClient = new CalculateClient();
-
- String svrMinusResult = calculateClient.CallMethod(url, "sayHelloWorldFrom", new Object[]{"牛"});
- System.out.println(svrMinusResult);
- }
-
- //实现WebService上发布的服务调用
- public String CallMethod(String url, String method, Object[] args) {
- String result = null;
- if(StringUtils.isEmpty(url)) {
- return "url地址为空";
- }
- if(StringUtils.isEmpty(method)) {
- return "method地址为空";
- }
- Call rpcCall = null;
- try {
- //实例websevice调用实例
- Service webService = new Service();
- rpcCall = (Call) webService.createCall();
- rpcCall.setTargetEndpointAddress(new java.net.URL(url));
- rpcCall.setOperationName(method);
- //执行webservice方法
- String rslt = (String) rpcCall.invoke(args);
- result = String.valueOf(rslt);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return result;
- }
- }
运行:
可能会遇到的问题:
1.在启动Tomcat后,运行客户端代码遇到错误:“org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.”
解决办法:找到web->WEB-INF下的server-config.wsdd文件定位到下面的内容做修改:
去掉红框部分
至此,webservice项目已经搭建完成,
1)添加jar包
1: idea添加jar包,选择File> Project Structure
选择Modules>>点击+号>>选择JARs..
点击jar包所在的位置,点击ok
点击ok
2:添加到(此步一定要添加)!!!
尝试着将mysql-connector-java-5.1.44-bin.jar的jar包加入C:\Program Files\Java\jre1.6.0_02\lib\ext文件夹下,原来是不仅仅 要求将驱动加入classpath中,而且需要将该jar包加入到java运行环境的外部jar包中。
2)编写代码:
- package example;
-
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
-
- public class BaseDao {
-
- public static String sql_insert(String name)throws Exception {
- System.out.println("w:"+name);
- Class.forName("com.mysql.jdbc.Driver");
- String url = "jdbc:mysql://127.0.0.1:3306/Govern?useUnicode=true&characterEncoding=utf-8";
- String user = "root";
- String password = "123456";
- // 建立数据库连接,获得连接对象conn
- Connection conn = DriverManager.getConnection(url, user, password);
- String sql = "insert into cs (cs) values (?);"; // 生成一条sql语句
- // 创建一个Statment对象
- PreparedStatement ps = conn.prepareStatement(sql);
- // 为sql语句中第一个问号赋值
- ps.setString(1, name);
- // 执行sql语句
- ps.executeUpdate();
- // 关闭数据库连接对象
- conn.close();
- System.out.println("完毕!!!");
- return "1";
- }
-
- }
数据库表字段:
id为自增的;
3)调用
在HelloWorld中修改(访问接口是调用添加到数据库的方法)
- package example;
-
- import Dao.BaseDao;
-
- public class HelloWorld {
- public String sayHelloWorldFrom(String from) throws Exception {
- return BaseDao.sql_insert(from);
- }
- }
右键重新生成wsdl
重新调用一下客户端代码,调用服务
控制台(方法调用成功return的1)
数据库:
至此添加数据库也全部结束!
ps:
参数是可以再添加的
总结的有些急促,有不懂的可以评论哦(评论必回)
参考文章:
https://blog.csdn.net/qq_43147940/article/details/84712605:Intellij IDEA开发WebService
https://blog.csdn.net/jiajikang_jjk/article/details/79742718:java利用jdbc连接数据库之插入数据
直接调用添加到数据库可以添加,但是通过接口添加错误,解决办法:
https://blog.csdn.net/qq_20936333/article/details/81254928
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。