`
smartzxy
  • 浏览: 200376 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

学习使用JAXM处理SOAP

阅读更多

       刚刚看完JAXM的教程,赶紧做个学习记录,以备以后的温习。

       我使用的是Myeclipse开发工具,包含了大部分jar包了,还差一个JAXM-API包需要另外加进来,我是在我安装的JEE5的文件夹里找到的。(在附件里供下载)

       使用JAXM发送SOAP有两种方法:SOAPConnection和Messaging providers,而编码SOAP的方法却是一样的,具体的还是在代码里体现吧。

    这段代码使用的是SOAPConnection:

public static void main(String[] args)
			throws UnsupportedOperationException, SOAPException {
		
		// Create SOAPConnection, two steps:
		SOAPConnectionFactory soapFactory = SOAPConnectionFactory.newInstance();
		SOAPConnection con = soapFactory.createConnection();

		// Create SOAPMessage
		MessageFactory messageFactory = MessageFactory.newInstance();
		SOAPMessage message = messageFactory.createMessage();
		
               // Create SOAPPart
		SOAPPart soapPart = message.getSOAPPart();
		// Create SOAPEnvelope
		SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
		// Create SOAPHeader
		SOAPHeader soapHeader = soapEnvelope.getHeader();
		soapHeader.detachNode();     //delete Header node
		// Create SOAPBody
		SOAPBody soapBody = soapEnvelope.getBody();
		Name bodyName = soapEnvelope.createName("getLastTradePrice", "m",
				"http://http://smartzxy.iteye.com");
		SOAPBodyElement gltp = soapBody.addBodyElement(bodyName);
		// insert content to <getLastTradePrice/>
		Name name=soapEnvelope.createName("Symbol");
		SOAPElement symbol=soapBody.addChildElement(name);
		symbol.addTextNode("SUNW");
		try {
			//Print the packed SOAP message
                       message.writeTo(System.out);
		} catch (IOException e) {
			 
			e.printStackTrace();
		}
               
               //Send SOAP message
		URLEndpoint endpoint=new URLEndpoint("http://smartzxy.iteye.com");
		SOAPMessage response=con.call(message, endpoint);
		con.close();
			
	}

 

    这段代码使用的是Messaging Provider:

public static void main(String[] args) throws NamingException,
			SOAPException, ParserConfigurationException, MalformedURLException {
		
		// Create Messaging Provider to send SOAP message
		Context ctx = new InitialContext();
		ProviderConnectionFactory pcFactory = (ProviderConnectionFactory) ctx
				.lookup("Test1");
		ProviderConnection pcCon = pcFactory.createConnection();

		// Get a Message Factory
		ProviderMetaData metaData = pcCon.getMetaData();
		String[] supportedProfiles = metaData.getSupportedProfiles();
		String profile = null;
		for (int i = 0; i < supportedProfiles.length; i++) {
			if (supportedProfiles[i].equals("ebxml")) {
				profile = supportedProfiles[i];
				break;
			}
		}
		MessageFactory factory = pcCon.createMessageFactory(profile);

		// Create SOAP message
		EbXMLMessageImpl message=(EbXMLMessageImpl)factory.createMessage();
		SOAPMessage message = factory.createMessage();
		
               SOAPPart soappart = message.getSOAPPart();
		

		// Create SOAP message from existed xml file
		DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
		try {
			Document doc = dBuilder.parse("e:\\soap.xml");
			DOMSource domSource = new DOMSource(doc);
			soappart.setContent(domSource);
		} catch (SAXException e) {
			 
			e.printStackTrace();
		} catch (IOException e) {
			 
			e.printStackTrace();
		}

		// Add attachment
		String str = "Update address for Sunny Skies "
				+ "Inc., to 10 Upbeat Street, Pleasant Grove, CA 95439";
		AttachmentPart attachment = message.createAttachmentPart();
		attachment.setContent(str, "text/plain");
		attachment.setContentId("address");
		message.addAttachmentPart(attachment);

		//Add jpeg attachment 
               AttachmentPart attachment2=message.createAttachmentPart(); 
               byte[] jpegData=…; 
               ByteArrayInputString stream=new ByteArrayInputStream(jpegData);
		attachment2.setContent(stream,”image/jpeg”);
	        message.addAttachmentPart(attachment);
		
		//Another way to add jpeg attachment
               URL url = new URL("http://greatproducts.com/gizmos/img.jpg");
		DataHandler dh = new DataHandler(url);
		AttachmentPart attachment3 = message.createAttachmentPart(dh);
		attachment3.setContentId("gyro_image");
		message.addAttachmentPart(attachment);

		// Get attachment
		Iterator it = message.getAttachments();
		while (it.hasNext()) {
			AttachmentPart attachment4 = (AttachmentPart) it.next();
			Object content = attachment4.getContent();
			String id = attachment4.getContentId();
			System.out.print("Attachment " + id + " contains: " + content);
			System.out.println("");
		}

		pcCon.send(message);
		pcCon.close();
	}
 
  • jaxm-api.jar (22.5 KB)
  • 描述: 用到的jar包:jaxm-api.jar
  • 下载次数: 493
分享到:
评论
1 楼 duoluoboy365 2008-10-29  
你好,就是看了你的文章后,很不错。。
可是我在模仿时,EbXMLMessageImpl类不是JAXMapi中的一个类,但是我找了很长时间也没有找到这类所在哪个包中,
新手指点一下?
changu2006@126.com
谢谢

相关推荐

    JAVA_webservice教程

    - 提供了一种标准化的方法来处理SOAP消息。 - 支持异步消息处理。 - 可以与Java EE容器集成,实现更高级别的服务。 - 实践案例: - 使用JAXM API创建SOAP消息,并封装相关的元数据。 - 在Tomcat服务器上部署...

    saaj访问web服务

    SAAJ (SOAP with Attachments API for Java) 是一个重要的Java API,主要用于处理SOAP消息,特别是那些带有附件的消息。它是由JCP (Java Community Process) 开发的标准,作为JAXM (Java API for XML Messaging) 的...

    Webservice-CXF实用手册学习大全

    - JAXM&SAAJ:JAXM(Java API for XML Messaging)是用于发送和接收XML消息的规范,而SAAJ(SOAP with Attachments API for Java)是与JAXM配合使用,支持SOAP消息的构建和解析,包括附件的传输。 - JAX-WS:JAX-...

    Java学习的30个目标.txt

    - **SAAJ**:熟悉SOAP with Attachments API for Java,学会使用SAAJ处理带有附件的SOAP消息。 - **JAXB**:掌握Java Architecture for XML Binding,学会使用JAXB进行XML与Java对象之间的映射。 - **JAXM**:了解...

    Apache CXF 中文教程

    JAXM和SAAJ都与SOAP紧密相关,两者结合使用可以处理复杂的SOAP消息,但它们的使用相对复杂。 JAX-WS(Java API for XML Web Services)是JAXM的演进版本,它提供了更加面向对象的Web服务开发模式。JAX-WS底层依赖...

    JAVA的WebService支持CXF与SAAJ第三版

    本教程旨在深入探讨如何使用CXF框架开发WebService,同时涵盖了多种与WebService相关的技术规范,包括但不限于JAX-WS、JAX-RS、JAX-RPC、JAXM、SAAJ以及MTOM等。通过本教程的学习,读者不仅能够了解这些技术的基本...

    jwsdp学习笔记(挺不错的)

    - 提供了处理SOAP消息(包括带有附件的消息)的能力。 - 支持可靠的SOAP消息传输。 - 可以用于填充基于特定协议(如ebXML)的SOAP消息的部分内容。 ##### 3. JAX-RPC (Java API for XML-based Remote Procedure ...

    Java学习的30个目标

    学习SOAP、REST等Web服务技术,包括JAX-RPC、SAAJ、JAX-WS等API的使用,实现跨平台的数据交换和服务集成。 #### 15. IoC/DI容器与框架 熟悉Spring、PicoContainer等依赖注入(DI)和面向切面编程(AOP)框架,简化...

    欲为Java技术大牛所需的25个学习要点

    12. **Web服务**:掌握构建Web服务的技术,如JAX-RPC、SAAJ、JAXB、JAXM、JAXR或JWSDP,了解SOAP、RESTful服务的设计和实现。 13. **轻量级框架**:研究Spring、PicoContainer、Avalon等轻量级应用框架,理解依赖...

    学习java的30个目标.txt

    - **技术要点**:JAX-RPC、SAAJ、JAXB、JAXM、JAXR、JWSDP等。 - **应用场景**:构建SOAP、RESTful风格的服务端点。 #### 目标15:学习依赖注入(DI)和控制反转(IoC)容器 - **框架选择**:Spring、Pico ...

    J2EE And XML Development

    #### Web服务使用SOAP、WSDL和UDDI - **解释**:这些技术是构建Web服务的基础,其中SOAP用于消息传递,WSDL用于服务描述,UDDI用于服务注册和查找。 - **应用场景**:在企业间进行数据交换或服务调用时,这些协议...

    WebService

    3. **SAAJ**:SOAP with Attachments API for Java,处理SOAP消息和附件。 4. **JAXB**:Java Architecture for XML Binding,将Java对象和XML数据绑定,简化序列化和反序列化。 5. **JAXM**:Java API for XML ...

    java笔试题java笔试附答案

    - **JAXM**:Java API for XML Messaging,用于SOAP通信的API,处理XML消息的发送和接收。 - **WSDL**:Web Services Description Language,XML格式,描述Web服务的接口和消息交换。 - **SOAP**:Simple Object ...

    J2EE复习题 文件内容很值得看 也很适合考试

    10. **Java API for XML Processing (JAXP)** 和 **Java API for XML Messaging (JAXM)**:JAXP 提供了处理XML文档的API,JAXM 则用于XML消息的发送和接收。 11. **Java Remote Method Invocation (RMI)** 和 **...

    java面试宝典(笔试题集锦)

    - **JAXM(Java API for XML Messaging)**:提供了一种用于SOAP通信的API。 #### 6. C/S 和 B/S 架构的区别 - **C/S(Client/Server)架构**:客户端/服务器架构,适用于固定用户群和专用网络环境。 - **特点**...

    web service

    文件"j2EE Web Services (928 Pages, Monson-Haefel).chm"可能详细介绍了Java平台上实现Web服务的技术,包括JAX-RPC(Java API for XML-based RPC)、JAXM(Java API for XML Messaging)和JAX-WS(Java API for XML...

    Java基础知识.pdf

    18. **Web Service相关规范**:在Java中,与Web Service相关的规范包括SOAP(简单对象访问协议),WSDL(Web服务描述语言),UDDI(统一描述、发现和集成),以及JAXP(Java API for XML Processing)、JAXM(Java ...

Global site tag (gtag.js) - Google Analytics