过去几天,我很难在java中创建一个加密的SOAP Web服务。 任何人都可以建议我如何实现它?
我会告诉你我到现在为止做了什么。
1)Person.java(POJO CLASS)
npm install
2)PersonService(接口)
package com.journaldev.jaxws.beans;
import java.io.Serializable;
public class Person implements Serializable{
private static final long serialVersionUID = -5577579081118070434L;
private String name;
private int age;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString(){
return id+"::"+name+"::"+age;
}
}
3)PersonServiceImpl(服务实现类)
package com.journaldev.jaxws.service;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import com.journaldev.jaxws.beans.Person;
@WebService
@SOAPBinding(style = SOAPBinding.Style.RPC)
public interface PersonService {
@WebMethod
public boolean addPerson(Person p);
@WebMethod
public boolean deletePerson(int id);
@WebMethod
public Person getPerson(int id);
@WebMethod
public Person[] getAllPersons();
}
4)SOAPPublisher(发布者或服务器)
package com.journaldev.jaxws.service;
package com.journaldev.jaxws.service;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.jws.WebService;
import com.journaldev.jaxws.beans.Person;
@WebService(endpointInterface = "com.journaldev.jaxws.service.PersonService")
public class PersonServiceImpl implements PersonService {
private static Map<Integer,Person> persons = new HashMap<Integer,Person>();
@Override
public boolean addPerson(Person p) {
if(persons.get(p.getId()) != null) return false;
persons.put(p.getId(), p);
return true;
}
@Override
public boolean deletePerson(int id) {
if(persons.get(id) == null) return false;
persons.remove(id);
return true;
}
@Override
public Person getPerson(int id) {
return persons.get(id);
}
@Override
public Person[] getAllPersons() {
Set<Integer> ids = persons.keySet();
Person[] p = new Person[ids.size()];
int i=0;
for(Integer id : ids){
p[i] = persons.get(id);
i++;
}
return p;
}
}
5)SOAPPublisherClient(客户端)
import javax.xml.ws.Endpoint;
public class SOAPPublisher {
public static void main(String[] args) {
Endpoint.publish("http://localhost:8080/ws/person", new PersonServiceImpl());
}
}
这就是我目前所做的。 我想知道如何使用X.509加密Message body。 任何人都可以帮助我解决服务器和客户端代码问题。
答案 0 :(得分:0)
有一个很好的SOAP扩展名为WS-Security。该标准定义了签名和加密消息的外观。
我不确定您使用哪个框架(cxf,axis2,other?)每个框架都有不同的方式来设置邮件加密。
对于CXF,我建议从this reading开始,甚至还会链接一些samples。
我无法找到/链接我之前项目中的代码片段,如果我找到它们,我将尝试在允许的情况下将它们粘贴到此处。