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文件。
8.启动Weblogic,测试通过。
以上为本人亲测,没有任何问题,如有其他好的方法,大家可以一起讨论交流。