java编写webService
1、编写接口
@WebService
public interface IMclzService {
@WebMethod
public String saveMclzData(@WebParam(name="param") String param);
@WebMethod
public String test(String param);
}
2、编写实现类
@WebService(targetNamespace="http://service.mclz.elink.com/",endpointInterface= "com.elink.mclz.service.IMclzService")
@Component
public class MclzServiceImpl implements IMclzService {
private static final Logger log = LoggerFactory.getLogger(MclzServiceImpl.class);
@Autowired
private UserService userService;
@Autowired
private ISpService spService;
@Override
public String saveMclzData(@WebParam(name = "param") String param) {
log.info("保存名厨亮灶企业数据:客户端发来的参数:{}",param);
Map resultMap = new HashMap();
try{
Map object = JSON.parseObject(param);
//参数解析之后securityParams为用户信息,queryParams为实质请求参数
if(userService.isMatch((Map) object.get("securityParams"))){//验证成功
spService.saveMclzData((Map) object.get("queryParams"));
resultMap.put("status", ConstantUtil.status_success);
resultMap.put("msg", ConstantUtil.msg_success);
}else{
resultMap.put("status", ConstantUtil.longin_error);
resultMap.put("msg", ConstantUtil.msg_longin_error);
}
}catch (Exception e){
e.printStackTrace();
resultMap.put("status", ConstantUtil.status_error);
resultMap.put("msg", ConstantUtil.msg_error);
}finally {
return DataToJsonUtil.MapToJsonStr(resultMap);
}
}
@Override
public String test(String param) {
return "hello i am mclz";
}
}
3、注册服务
@Configuration
public class CxfConfig {
@Autowired
private Bus bus;
@Autowired
private IMclzService mclzService;
@Bean
public Endpoint endpointMclz() {
EndpointImpl endpoint = new EndpointImpl(bus, mclzService);
endpoint.publish("/mclz");
return endpoint;
}
}
4、编写测试类
@RestController
@RequestMapping("/webServiceClient")
public class MclzWebServiceClient {
private static final Logger LOGGER = Logger.getLogger(MclzWebServiceClient.class);
public static void main(String[] args){
JaxWsDynamicClientFactory dcf=JaxWsDynamicClientFactory.newInstance();
String url="http://172.16.2.167:8080/webservice/services/mclz?wsdl"; //ws接口调用地址
Client client = dcf.createClient(url);
String userName="sdsj"; //用户名
String password="1qazxsw2elink"; //密码
String code="mclzspsj";
HashMap<String, Object> map=new HashMap<String, Object>();
Map securityParams=new HashMap<String, Object>();
securityParams.put("userName",userName);
securityParams.put("password",password);
securityParams.put("code",code);
map.put("securityParams",securityParams);
Map queryParams=new HashMap<String, Object>();
queryParams.put("xydm","91610924MA70Q4BH1F");
queryParams.put("xkzbh","JY16109240087646");
queryParams.put("qymc","紫阳县飞瀑茶业有限公司");
List spResouces = new ArrayList<Map>();
Map sblbMapOne = new HashMap();
sblbMapOne.put("sbmc","操作间1");
sblbMapOne.put("sbbs","12a1e321-eaa6-4c17-979a-f26c815f2e7c");
spResouces.add(sblbMapOne);
Map sblbMapTwo = new HashMap();
sblbMapTwo.put("sbmc","操作间2");
sblbMapTwo.put("sbbs","12a1e321-eaa6-4c17-979a-f26c815f2e7c");
spResouces.add(sblbMapTwo);
queryParams.put("sblb",spResouces);
map.put("queryParams",queryParams);
String jsonStr = JSON.toJSONString(map);
try {
Object[] str = client.invoke("saveMclzData",jsonStr);
System.out.println(str[0]);
} catch (Exception e) {
System.err.println("接口调用失败");
e.printStackTrace();
}
}
}
注意:服务地址组成 “ip:port/项目名称/services/注册端点服务地址名称?wsdl”;