webservice参数传递

java_caoxing 2014-04-11 03:33:13
webservice有两个应用 A应用和B应用A应用提供webservice接口。。 B应用调用A应用的接口, 然后插入数据到A应用中(数据是从B中查询得到的),想请问下A应用是怎么接受数据的。
是用的axis2
这是客户端(同上的B应用)
package client;

import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;


public class StudentRPCClient {

/**
* @param args
* @throws AxisFault
*/
public static void main(String[] args) throws Exception {

RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/StudentService");
//EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/StudentService");
options.setTo(targetEPR);

// QName opAddEntry = new QName("http://ws.apache.org/axis2", "getAllStudent");
// String[] strArray = (String[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{}, new Class[]{String[].class})[0];
//
// for (String s : strArray)
// {
// String[] array = s.split(",");
// for(String ss: array) System.out.print("<" + ss + "> "); System.out.println();
// }

System.out.println();
Class[] classes=new Class[]{String.class};
QName opAddEntry = new QName("http://ws.apache.org/axis2", "insertUser");
System.out.println(serviceClient.invokeBlocking(opAddEntry,new Object[]{},classes)[0]);
}

}


这是服务端(同上A应用)
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.Header;
import org.apache.http.HeaderIterator;
import org.apache.http.HttpRequest;
import org.apache.http.ProtocolVersion;
import org.apache.http.RequestLine;
import org.apache.http.params.HttpParams;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;

import conn.GetAllStu;
import data.Student;



public class StudentService{

// public int end=1;
// public String[] getAllStudent()
// {
// GetAllStu getStu=new GetAllStu();
// List<Student> list=getStu.getAllStudent();
// int num=Integer.valueOf(list.size());
// String[] str=new String[num];
// for(int i=0;i<list.size();i++)
// {
// str[i]=String.valueOf(list.get(i).getId())+","+list.get(i).getName()+","+list.get(i).getAddress();
// }
// return str;
// }


public String insertUser() throws SQLException
{

String userName="";
String password="";
String user="root";
String pass="";
String url="jdbc:mysql://localhost:3306/xindou_db";
String driver="com.mysql.jdbc.Driver";
Connection conn=null;
Statement st=null;
ResultSet rs=null;
List<Student> list=new ArrayList<Student>();
try {
Class.forName(driver);
conn=(Connection) DriverManager.getConnection(url, user, pass);
st = (Statement) conn.createStatement();
String sqlstr="insetr into t_user('"+userName+"','"+password+"')";
rs=st.executeQuery(sqlstr);
}catch(Exception e)
{
e.printStackTrace();
}finally
{
rs.close();
st.close();
conn.close();
}
return "1";
}
}
...全文
1098 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
java_caoxing 2014-04-14
引用 12 楼 zhwwanwan 的回复:
我无论使用Axis2 MyEclipse Plugin还是Axis2 提供的 WSDL2Java.bat工具来生成客户端,生成之后的客户端都比较混乱,里面代码格式乱七八糟,对于一些复杂对象,生成的实体类里面方法特别乱,我想生成客户端的实体类跟服务端的实体类完全一样,请问有什么办法可以实现?就是没有其他多余的方法。
我一开始也是用工具,发现生成出来用不了,就用的那种把axis2文件夹部署在tomcat下的webapps下
  • 打赏
  • 举报
回复
zhwWasHere 2014-04-12
我无论使用Axis2 MyEclipse Plugin还是Axis2 提供的 WSDL2Java.bat工具来生成客户端,生成之后的客户端都比较混乱,里面代码格式乱七八糟,对于一些复杂对象,生成的实体类里面方法特别乱,我想生成客户端的实体类跟服务端的实体类完全一样,请问有什么办法可以实现?就是没有其他多余的方法。
  • 打赏
  • 举报
回复
wyx100 2014-04-12
webservice 发布出来
  • 打赏
  • 举报
回复
兔子托尼啊 2014-04-11
你的没仔细看,最终生成的wsdl 里面有参数就行了。这个文章你看看把,网上很多例子。
  • 打赏
  • 举报
回复
java_caoxing 2014-04-11
不知道你注意到没。。我上面写的A应用并没有调用B应用。 是B应用调用A应用然后插数据到A应用中
  • 打赏
  • 举报
回复
java_caoxing 2014-04-11
引用 7 楼 rui888 的回复:
你不是都发布好了吗?发布好了就直接获取。你浏览器把地址输入,然后参数录入。就如 这样的http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getSupportCity
你的意思是在服务端那边直接通过httpequest 获取还是? 不知道你说的直接获取是怎么获取。
  • 打赏
  • 举报
回复
兔子托尼啊 2014-04-11
你不是都发布好了吗?发布好了就直接获取。你浏览器把地址输入,然后参数录入。就如 这样的http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?op=getSupportCity
  • 打赏
  • 举报
回复
java_caoxing 2014-04-11
那服务端那边怎么接收?
  • 打赏
  • 举报
回复
whos2002110 2014-04-11
invoke 方法的第二个参数Object[], 就是你想传入的参数
  • 打赏
  • 举报
回复
兔子托尼啊 2014-04-11
就是在 invokeBlocking 方法里面传进去
  • 打赏
  • 举报
回复
java_caoxing 2014-04-11
引用 2 楼 rui888 的回复:
先把 webservice 发布出来。
发布、以及查询的列子已经实现了,我现在只是想知道B调A的接口时,怎么把参数传到A。
  • 打赏
  • 举报
回复
兔子托尼啊 2014-04-11
先把 webservice 发布出来。
  • 打赏
  • 举报
回复
java_caoxing 2014-04-11
其实就是获取上面username 和password的值,只不过值是怎么从B那边传过来
  • 打赏
  • 举报
回复
发帖
Web 开发

8.0w+

社区成员

Java Web 开发
社区管理员
  • Web 开发社区
加入社区
帖子事件
创建了帖子
2014-04-11 03:33
社区公告
暂无公告