Maximo中调用XFire客户端的实现—Weblogic中间件

原创
2012/05/19 15:26
阅读数 835

1.在Maximo工程中创建com.test.webservice包。

2.保存将http://test:8080/test/services/updateOrderItemImpl?wsdl文件保存到src根目录中。

3.将web service 接口类放入com.test.webservice包中。

package com.test.webservice;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

@WebService(name = "UpdateOrderItem", targetNamespace = "http://webservice.test.com/")
@SOAPBinding(use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public interface UpdateOrderItem {

	@WebMethod(operationName = "upOrderItem", action = "")
	@WebResult(name = "return", targetNamespace = "")
	public boolean upOrderItem(
			@WebParam(name = "id", targetNamespace = "http://webservice.test.com/") String id,
			@WebParam(name = "status", targetNamespace = "http://webservice.test.com/") String status,
			@WebParam(name = "owner", targetNamespace = "http://webservice.test.com/") String owner,
			@WebParam(name = "ownergroup", targetNamespace = "http://webservice.test.com/") String ownergroup);

}

4.编写客户端调用程序。

package com.test.webservice;

import java.io.IOException;

import org.codehaus.xfire.client.Client;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;

public class TestClient {

	/**
	 * @param args
	 * @throws Exception 
	 * @throws IOException 
	 */
	public static void main(String[] args){
		Object [] results = new TestClient().testClientMode("06ff91203759e0d4013759e98700001a", "status", "owner", "ownergroup");
        System.out.println( " result:  "   +  results[ 0 ]);
	}
	
	public Object[] testClientMode(String id ,String status,String owner,String ownerGroup){
		String wsdl = "updateOrderItemImpl.xml" ;  // 对应的WSDL文件 
        Resource resource  =   new  ClassPathResource(wsdl); 
        Client client = null;
		try {
			client = new  Client(resource.getInputStream(),  null );
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  // 根据WSDL创建客户实例 
        Object[] objArray  =   new  Object[4];
        objArray[0]  = id;
        objArray[1]  = status;
        objArray[2]  = owner;
        objArray[3]  = ownerGroup;
         // 调用特定的Web Service方法 
        Object[] results = null;
		try {
			results = client.invoke( "upOrderItem" , objArray);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
        return results;
	}

}

5.在Maximo工程中添加XFire的支持。

6.在Maximo 需要调用接口的代码中加入调用方法。

/**
		 * 2012-5-18 jxd	保存服务请求时判断是否是Portal提交的请求,如果是再判断Owner,OwnerGroup,Status是否发生变化,
		 * 					如果发生变化调用Porta接口,同步更新数据。
		 */
		
		if (getBoolean("MEP_PORTAL_SUBMIT")){
			if (getBoolean("MEP_PORTAL_ISNEW")){
				setValue("MEP_PORTAL_ISNEW", false,NOACCESSCHECK | NOVALIDATION_AND_NOACTION);
			} else if (isModified("OWNER") || isModified("OWNERGROUP") || isModified("STATUS")) {
				Object [] object = new TestClient().testClientMode(getString("MEP_PORTAL_ORDERITEMID"), getString("STATUS"), getString("OWNER"), getString("OWNERGROUP"));
				System.out.println(object[0]+"------------------");
			}
		}

7.将XFire的支持jar文件加入Weblogic的启动目录中,D:\bea\user_projects\domains\base_domain\lib。放入Maximo lib目录中有问题,总是提示找不到XFire的相关jar文件。

XFire所需支持

8.启动Weblogic,测试通过。

以上为本人亲测,没有任何问题,如有其他好的方法,大家可以一起讨论交流。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部