只列出部分核心代码, 其它代码都是myeclipse生成, 详见附件.
1.服务器代码:
HelloWorld.java代码:
package test;
public class HelloWorld implements IHelloWorld {
public Float add(float a, float b) {
return a + b;
}
public String sayHello(String name) {
return "hello, " + name + "...";
}
}
IHelloWorld.java代码:
package test;
import java.rmi.Remote;
public interface IHelloWorld extends Remote{
public String sayHello(String name);
public Float add(float a, float b);
}
ServerHandler.java代码:
package test;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.XFireRuntimeException;
import org.codehaus.xfire.handler.AbstractHandler;
import org.jdom.Element;
public class ServerHandler extends AbstractHandler {
public void invoke(MessageContext message) throws Exception {
Element header = message.getInMessage().getHeader();
if (header == null) {
throw new XFireRuntimeException("Missing SOAP header...");
}
Element element = header.getChild("AuthenticationToken");
String userName = element.getChild("userName").getValue();
String password = element.getChild("password").getValue();
System.out.println("userName:" + userName + ",password" + password);
if ("wander".equals(userName) && "wander".equals(password)) {
System.out.println("yes, you passed...");
} else {
throw new XFireRuntimeException("error password and username...");
}
}
}
services.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
<name>HelloWorldSimple</name>
<namespace>http://simple.xfire.webservice/HelloWorld</namespace>
<serviceClass>test.IHelloWorld</serviceClass>
<implementationClass>test.HelloWorld</implementationClass>
<scope>request</scope>
<inHandlers>
<handler handlerClass="test.ServerHandler">
</handler>
</inHandlers>
</service>
</beans>
2.XFire实现身份验证
ClientMain2.java代码:
package test;
import java.util.List;
import java.lang.reflect.Proxy;
import java.net.MalformedURLException;
import java.util.ArrayList;
import org.codehaus.xfire.MessageContext;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxy;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.handler.AbstractHandler;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.jdom.Element;
public class ClientMain2
extends AbstractHandler{
public static void main(String[] args) throws MalformedURLException {
ClientMain2
auth = new ClientMain2
();
String url = "http://localhost:8080/msg/services/HelloWorldSimple";
Service service = new ObjectServiceFactory().create(IHelloWorld.class);
IHelloWorld helloWorld = (IHelloWorld) new XFireProxyFactory().create(service, url);
XFireProxy xfireProxy = (XFireProxy) Proxy.getInvocationHandler(helloWorld);
Client client = xfireProxy.getClient();
client.addOutHandler(auth);
System.out.println(helloWorld.sayHello("wander"));
}
public void invoke(MessageContext message) throws Exception {
Element header = new Element("header");
Element authentication = new Element("AuthenticationToken");
Element userName = new Element("userName");
userName.setText("wander");
Element password = new Element("password");
password.setText("wander");
authentication.addContent(userName);
authentication.addContent(password);
header.addContent(authentication);
message.getOutMessage().setHeader(header);
}
}
3.Jax-ws
实现身份验证
ClientMain.java代码
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.Handler;
import javax.xml.ws.handler.HandlerResolver;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.PortInfo;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
public class ClientMain {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
HelloWorldSimple simple = new HelloWorldSimple();
simple.setHandlerResolver(new HandlerResolver() {
public List<Handler> getHandlerChain(PortInfo portInfo) {
List<Handler> list = new ArrayList<Handler>();
list.add(new MySOAPHandler());
return list;
}
});
HelloWorldSimplePortType port = simple.getHelloWorldSimpleHttpPort();
System.out.println(port.sayHello("cat1"));
}
}
class MySOAPHandler implements SOAPHandler<SOAPMessageContext> {
public Set<QName> getHeaders() {
return null;
}
public void close(MessageContext context) {
}
public boolean handleFault(SOAPMessageContext context) {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean handleMessage(SOAPMessageContext context) {
Boolean outboundProperty = (Boolean) context
.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
if (outboundProperty.booleanValue()) {
SOAPMessage message = context.getMessage();
try {
SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
SOAPFactory factory = SOAPFactory.newInstance();
SOAPElement authenticationToken = factory
.createElement("AuthenticationToken");
SOAPElement userName = factory.createElement("userName");
userName.setValue("wander");
SOAPElement password = factory.createElement("password");
password.setValue("wander");
authenticationToken.addChildElement(userName);
authenticationToken.addChildElement(password);
SOAPHeader header = envelope.addHeader();
header.addChildElement(authenticationToken);
} catch (SOAPException e) {
e.printStackTrace();
}
}
return true;
}
}
- 大小: 119 KB
分享到:
相关推荐
这个小实例有server和client的代码,server直接用myeclipse导入,然后添加spring2.0 aop和core,xfire1.2即可.client也是直接导入项目,然后导入jax-ws2.1api和jax-ws2.1 runtime libraries即可.这些包通过点击项目...
axis,jax-ws,xfire客户端调用分析,以及webservice万能客户端
MyEclipse Web Services是建立在XFire Java SOAP框架和工具基础上的, ... XFire支持 Web Services standards,Spring 整合, 支持JBI , 支持 JAXB ,XMLBeans,Java 5 和JAX-WS.并支持HTTP, JMS, XMPP, In-memory传输协议
XFire Java SOAP框架概述 MyEclipse Web Services是建立在XFire Java ... XFire支持 Web Services standards,Spring 整合, 支持JBI , 支持 JAXB ,XMLBeans,Java 5 和JAX-WS.并支持HTTP, JMS, XMPP, In-memory传输协议
MyEclipse Web Services是建立在XFire Java SOAP框架和工具基础上的, ... XFire支持 Web Services standards,Spring 整合, 支持JBI , 支持 JAXB ,XMLBeans,Java 5 和JAX-WS.并支持HTTP, JMS, XMPP, In-memory传输协议.
CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First...
myEclipse10和JDK7创建WebService,包括发布和使用2个例子,实例源代码。可供大家参考。使用的是SUN公司自己的 JAX-WS 框架,没有使用 XFire和CXF等不流行的技术。
一个关于CXF实现jax-ws规范的webservice #CXF框架 Apache CXF=Celtix+Xfire.是一个开源的一个webservice,可以与spring无缝集成。支持soap1.1、1.2、RESTtful或者CORBA。 ##使用CXF实现jax-ws规范的webservice ...
CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First...
CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First...
不用说了,自己整理的。绝对实用,错过了是你的错
CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First...
包含两个项目,个人通讯录为服务器端,E家园为客服端,没有涉及框架技术,只是通过servlet,jsp,jdbc,xFire,JAX-WS等技术实现,代码均调试通过,希望对大家的java学习有帮助
向您介绍在Java/J2EE环境下,实现Web服务的主要方法,它们分别是: (1) 使用JAX-WS 2.0来实现Web服务 (2) 使用Apache Axis来实现Web服务 (3) 使用Spring来实现Web服务 (4) 使用XFire来实现Web服务
Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS 。这些 Services 可以支持多种协议,比如:SOAP、XML/HTTP、RESTful HTTP 或者 CORBA ,并且可以在...
CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First...
CXF 继承了 Celtix 和 XFire 两大开源项目的精华,提供了对 JAX-WS 全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First...
在Java语言中重要的两个以SOAP技术开始的网络服务框架XFire和Axis也把REST作为自己的另一种选择。它们的新的项目分别是ApacheCXF和Axis2.Java语言也制定关于REST网络服务规范:JAX-RS:JavaAPIforRESTfulWebServices...