http://127.0.0.1:8080/web/services 这样可以列出所有方法比如int add(String sql){
}
我在桌面程序客户端,可以直接调用这个方法,怎样防止别人调用这个方法呢?
}
我在桌面程序客户端,可以直接调用这个方法,怎样防止别人调用这个方法呢?
解决方案 »
- jsp连接数据库,上传头像如何实现?
- tomcat启动出现错误
- 独立钻研的WebService结构,请教一下各位高人,万分感谢!
- struts 中如何去properties 急!!
- 高分求解,关于hibernate的问题(table per class hierarchy)
- 关于在struts中多个struts-config.xml文件的问题
- 问下高手一个问题,据说N多人都不会
- 对J2EE的几个问题请教大家。
- EAI Bus的解释
- 注册时验证用户名重复 哪种方法好
- struts2 重新请求后属性值仍保持上次请求的结果
- Struts2的标签库太麻烦了,有没有不用标签库实现StrutsMVC的技术
sun公司有下载的,他是webservices安全的保证哦,哈哈
webserivice项目名是:ClientDemo_WebServiceSoapHeader
package client;import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;public class ClientAuthenticationHandler extends AbstractHandler { private String username = null;
private String password = null; public ClientAuthenticationHandler() {
} public ClientAuthenticationHandler(String username, String password) {
this.username = username;
this.password = password;
} public void setUsername(String username) {
this.username = username;
} public void setPassword(String password) {
this.password = password;
} public void invoke(MessageContext context) throws Exception { // 为SOAP Header构造验证信息
Element el = new Element("header");
context.getOutMessage().setHeader(el);
Element auth = new Element("AuthenticationToken");
Element username_el = new Element("Username");
username_el.addContent(username);
Element password_el = new Element("Password");
password_el.addContent(password);
auth.addContent(username_el);
auth.addContent(password_el);
el.addContent(auth);
}
}package client;import java.net.MalformedURLException;
import java.util.Collection;
import java.util.HashMap;
import javax.xml.namespace.QName;
import org.codehaus.xfire.XFireRuntimeException;
import org.codehaus.xfire.aegis.AegisBindingProvider;
import org.codehaus.xfire.annotations.AnnotationServiceFactory;
import org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.jaxb2.JaxbTypeRegistry;
import org.codehaus.xfire.service.Endpoint;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.soap.AbstractSoapBinding;
import org.codehaus.xfire.transport.TransportManager;
import cal.UserInfo;public class AddTwoIntegerClient { private static XFireProxyFactory proxyFactory = new XFireProxyFactory();
private HashMap endpoints = new HashMap();
private Service service0; public AddTwoIntegerClient() {
create0();
Endpoint AddTwoIntegerHttpPortEP = service0 .addEndpoint(new QName("http://cal", "AddTwoIntegerHttpPort"), new QName("http://cal", "AddTwoIntegerHttpBinding"), "http://127.0.0.1:8001/ServerDemo_WebServiceSoapHeader/services/AddTwoInteger");
endpoints.put(new QName("http://cal", "AddTwoIntegerHttpPort"), AddTwoIntegerHttpPortEP);
Endpoint AddTwoIntegerPortTypeLocalEndpointEP = service0 .addEndpoint(new QName("http://cal", "AddTwoIntegerPortTypeLocalEndpoint"), new QName("http://cal", "AddTwoIntegerPortTypeLocalBinding"), "xfire.local://AddTwoInteger");
endpoints.put(new QName("http://cal", "AddTwoIntegerPortTypeLocalEndpoint"), AddTwoIntegerPortTypeLocalEndpointEP);
} public Object getEndpoint(Endpoint endpoint) {
try {
return proxyFactory.create((endpoint).getBinding(), (endpoint).getUrl());
} catch (MalformedURLException e) {
throw new XFireRuntimeException("Invalid URL", e);
}
} public Object getEndpoint(QName name) {
Endpoint endpoint = ((Endpoint) endpoints.get((name)));
if ((endpoint) == null) {
throw new IllegalStateException("No such endpoint!");
}
return getEndpoint((endpoint));
} public Collection getEndpoints() {
return endpoints.values();
} private void create0() {
TransportManager tm = (org.codehaus.xfire.XFireFactory.newInstance().getXFire().getTransportManager());
HashMap props = new HashMap();
props.put("annotations.allow.interface", true);
AnnotationServiceFactory asf = new AnnotationServiceFactory(new Jsr181WebAnnotations(), tm, new AegisBindingProvider(new JaxbTypeRegistry()));
asf.setBindingCreationEnabled(false);
service0 = asf.create((client.AddTwoIntegerPortType.class), props);
{
AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName("http://cal", "AddTwoIntegerPortTypeLocalBinding"), "urn:xfire:transport:local");
}
{
AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName("http://cal", "AddTwoIntegerHttpBinding"), "http://schemas.xmlsoap.org/soap/http");
}
} public AddTwoIntegerPortType getAddTwoIntegerHttpPort() {
return ((AddTwoIntegerPortType)(this).getEndpoint(new QName("http://cal", "AddTwoIntegerHttpPort")));
} public AddTwoIntegerPortType getAddTwoIntegerHttpPort(String url) {
AddTwoIntegerPortType var = getAddTwoIntegerHttpPort();
org.codehaus.xfire.client.Client.getInstance(var).setUrl(url);
return var;
} public AddTwoIntegerPortType getAddTwoIntegerPortTypeLocalEndpoint() {
return ((AddTwoIntegerPortType)(this).getEndpoint(new QName("http://cal", "AddTwoIntegerPortTypeLocalEndpoint")));
} public AddTwoIntegerPortType getAddTwoIntegerPortTypeLocalEndpoint(String url) {
AddTwoIntegerPortType var = getAddTwoIntegerPortTypeLocalEndpoint();
org.codehaus.xfire.client.Client.getInstance(var).setUrl(url);
return var;
} public static void main(String[] args) {
AddTwoIntegerClient client = new AddTwoIntegerClient();
//create a default service endpoint
AddTwoIntegerPortType service = client.getAddTwoIntegerHttpPort();
//TODO: Add custom client code here
//
//service.yourServiceOperationHere();
UserInfo u = new UserInfo();
Client c = Client.getInstance(service);
// c.addOutHandler(new ClientAuthenticationHandler("abcd","1234"));
c.addOutHandler(new ClientAuthenticationHandler("abcd","1234"));
int i = service.add(1,2);
System.out.println(i);
System.exit(0);
}}服务端:
webserivice项目名是ServerDemo_WebServiceSoapHeader
package cal;import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;public class AuthenticationHandler extends AbstractHandler { public void invoke(MessageContext cfx) throws Exception {
if (cfx.getInMessage().getHeader() == null) {
throw new org.codehaus.xfire.fault.XFireFault("header为空",
org.codehaus.xfire.fault.XFireFault.SENDER);
}
Element token = cfx.getInMessage().getHeader().getChild(
"AuthenticationToken");
if (token == null) {
throw new org.codehaus.xfire.fault.XFireFault("HEADER名不存在",
org.codehaus.xfire.fault.XFireFault.SENDER);
} String username = token.getChild("Username").getValue();
String password = token.getChild("Password").getValue(); try {
// 进行身份验证 ,只有abcd@1234的用户为授权用户
if (username.equals("abcd") && password.equals("1234"))
// 这语句不显示
System.out.println("身份验证通过");
else
throw new Exception();
} catch (Exception e) {
throw new org.codehaus.xfire.fault.XFireFault("非法的用户名和密码",
org.codehaus.xfire.fault.XFireFault.SENDER);
} }
}不清楚的话:Email to: [email protected]