Maison > Java > javaDidacticiel > le corps du texte

Introduction à la méthode pour compléter le mode service Web en Java

黄舟
Libérer: 2017-05-15 09:46:52
original
2422 Les gens l'ont consulté

Cet article présente principalement en détail la manière d'implémenter un service Web simple en Java, qui a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

L'exemple de cet article partage avec vous la manière d'implémenter un service Web dans. Java. Le code spécifique est pour votre référence. Le contenu spécifique est le suivant

Après les tests, des bugs apparaîtront sous jdk1.6.10. ci-dessus

1. DéfinitionInterface

package org.enson.chan;
 
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
 
@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC)
public interface IMyService {
 public int add(int a , int b);
 
 public int max(int a , int b);
}
Copier après la connexion

2. Implémenter l'interface

package org.enson.chan;
import javax.jws.WebService;

@WebService(endpointInterface="org.enson.chan.IMyService")
public class MyServiceImpl implements IMyService {

 public int add(int a, int b) {
 System.out.println(a+"+"+b+"="+(a+b));
 return a+b;
 }

 public int max(int a, int b) {
 System.out.println("a与b比较大小,取大值"+((a>b)?a:b));
 return (a>b)?a:b;
 }

}
Copier après la connexion

3. 🎜>4. Service de test

package org.enson.chan;
 
import javax.xml.ws.Endpoint;
 
public class MyServer {
 
 public static void main(String[] args) {
 String address = "http://localhost:8090/ns";
 Endpoint.publish(address, new MyServiceImpl());
 }
}
Copier après la connexion

5. TestSoap

package org.enson.chan;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

public class TestClient {

 public static void main(String[] args) {
 try {
  URL url = new URL("http://localhost:8090/ns?wsdl");
  QName sname = new QName("http://chan.enson.org/", "MyServiceImplService");
  //创建服务
  Service service = Service.create(url,sname);
  //实现接口
  IMyService ms = service.getPort(IMyService.class);
  System.out.println(ms.add(12,33));
  //以上服务有问题,依然依赖于IMyServie接口
 } catch (MalformedURLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 }

}
Copier après la connexion

[Recommandations associées]

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.net.URL;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPFaultException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.junit.Test;
import org.soap.service.User;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class TestSoap {
 
 private String ns = "http://service.soap.org/";
 private String wsdlUrl = "http://localhost:8989/ms?wsdl";
 @Test
 public void test01() {
 try {
  MessageFactory factory = MessageFactory.newInstance();
  
  SOAPMessage message = factory.createMessage();
  SOAPPart part = message.getSOAPPart();
  SOAPEnvelope envelope = part.getEnvelope();
  SOAPBody body = envelope.getBody();
  QName qname = new QName("http://java.zttc.edu.cn/webservice", 
   "add","ns");//<ns:add xmlns="http://java.zttc.edu.cn/webservice"/>
  //body.addBodyElement(qname).setValue("<a>1</a><b>2</b>");
  SOAPBodyElement ele = body.addBodyElement(qname);
  ele.addChildElement("a").setValue("22");
  ele.addChildElement("b").setValue("33");
  message.writeTo(System.out);
 } catch (SOAPException e) {
  e.printStackTrace();
 } catch (IOException e) {
  e.printStackTrace();
 }
 }
 
 @Test
 public void test02() {
 try {
  URL url = new URL(wsdlUrl);
  QName sname = new QName(ns,"MyServiceImplService");
  Service service = Service.create(url,sname);
  
  Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"),
   SOAPMessage.class, Service.Mode.MESSAGE);
  
  SOAPMessage msg = MessageFactory.newInstance().createMessage();
  SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
  SOAPBody body = envelope.getBody();
  
  QName ename = new QName(ns,"add","nn");//<nn:add xmlns="xx"/>
  SOAPBodyElement ele = body.addBodyElement(ename);
  ele.addChildElement("a").setValue("22");
  ele.addChildElement("b").setValue("33");
  msg.writeTo(System.out);
  System.out.println("\n invoking.....");
  
  
  SOAPMessage response = dispatch.invoke(msg);
  response.writeTo(System.out);
  System.out.println();
  
  Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();
  String str = doc.getElementsByTagName("addResult").item(0).getTextContent();
  System.out.println(str);
 } catch (SOAPException e) {
  e.printStackTrace();
 } catch (IOException e) {
  e.printStackTrace();
 }
 }
 
 @Test
 public void test03() {
 try {
  URL url = new URL(wsdlUrl);
  QName sname = new QName(ns,"MyServiceImplService");
  Service service = Service.create(url,sname);
  
  Dispatch<Source> dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"),
   Source.class, Service.Mode.PAYLOAD);
  
  User user = new User(3,"zs","张三","11111");
  JAXBContext ctx = JAXBContext.newInstance(User.class);
  Marshaller mar = ctx.createMarshaller();
  mar.setProperty(Marshaller.JAXB_FRAGMENT, true);
  StringWriter writer= new StringWriter();
  mar.marshal(user, writer);
  
  String payload = "<nn:addUser xmlns:nn=\""+ns+"\">"+writer.toString()+"</nn:addUser>";
  System.out.println(payload);
  StreamSource rs = new StreamSource(new StringReader(payload));
  
  Source response = (Source)dispatch.invoke(rs);
  
  Transformer tran = TransformerFactory.newInstance().newTransformer();
  DOMResult result = new DOMResult();
  tran.transform(response, result);
  
  XPath xpath = XPathFactory.newInstance().newXPath();
  NodeList nl = (NodeList)xpath.evaluate("//user", result.getNode(),XPathConstants.NODESET);
  User ru = (User)ctx.createUnmarshaller().unmarshal(nl.item(0));
  System.out.println(ru.getNickname());
 } catch (IOException e) {
  e.printStackTrace();
 } catch (JAXBException e) {
  e.printStackTrace();
 } catch (TransformerConfigurationException e) {
  e.printStackTrace();
 } catch (TransformerFactoryConfigurationError e) {
  e.printStackTrace();
 } catch (TransformerException e) {
  e.printStackTrace();
 } catch (XPathExpressionException e) {
  e.printStackTrace();
 }
 }
 
 @Test
 public void test04() {
 try {
  URL url = new URL(wsdlUrl);
  QName sname = new QName(ns,"MyServiceImplService");
  Service service = Service.create(url,sname);
  
  Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"),
   SOAPMessage.class, Service.Mode.MESSAGE);
  
  SOAPMessage msg = MessageFactory.newInstance().createMessage();
  SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
  SOAPBody body = envelope.getBody();
  
  SOAPHeader header = envelope.getHeader();
  if(header==null) header = envelope.addHeader();
  QName hname = new QName(ns,"authInfo","nn");
  header.addHeaderElement(hname).setValue("aabbccdd");
  
  QName ename = new QName(ns,"list","nn");//<nn:add xmlns="xx"/>
  body.addBodyElement(ename);
  msg.writeTo(System.out);
  System.out.println("\n invoking.....");
  
  
  SOAPMessage response = dispatch.invoke(msg);
  response.writeTo(System.out);
  System.out.println();
  
  Document doc = response.getSOAPBody().extractContentAsDocument();
  NodeList nl = doc.getElementsByTagName("user");
  JAXBContext ctx = JAXBContext.newInstance(User.class);
  for(int i=0;i<nl.getLength();i++) {
  Node n = nl.item(i);
  User u = (User)ctx.createUnmarshaller().unmarshal(n);
  System.out.println(u.getNickname());
  }
 } catch (SOAPException e) {
  e.printStackTrace();
 } catch (IOException e) {
  e.printStackTrace();
 } catch (JAXBException e) {
  e.printStackTrace();
 }
 }
 
 @Test
 public void test05() {
 try {
  URL url = new URL(wsdlUrl);
  QName sname = new QName(ns,"MyServiceImplService");
  Service service = Service.create(url,sname);
  
  Dispatch<SOAPMessage> dispatch = service.createDispatch(new QName(ns,"MyServiceImplPort"),
   SOAPMessage.class, Service.Mode.MESSAGE);
  
  SOAPMessage msg = MessageFactory.newInstance().createMessage();
  SOAPEnvelope envelope = msg.getSOAPPart().getEnvelope();
  SOAPBody body = envelope.getBody();
  
  QName ename = new QName(ns,"login","nn");//<nn:add xmlns="xx"/>
  SOAPBodyElement ele = body.addBodyElement(ename);
  ele.addChildElement("username").setValue("ss");
  ele.addChildElement("password").setValue("dd");
  msg.writeTo(System.out);
  System.out.println("\n invoking.....");
  
  
  SOAPMessage response = dispatch.invoke(msg);
  response.writeTo(System.out);
  System.out.println();
  
 } catch(SOAPFaultException e){
  System.out.println(e.getMessage());
 } catch (SOAPException e) {
  e.printStackTrace();
 } catch (IOException e) {
  e.printStackTrace();
 } 
 }
}
Copier après la connexion
1.

 :

"php programmer Téléchargez la version V0.1 de "Toolbox"

2. Tutoriel vidéo gratuit Java3.

Manuel en ligne YMP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal