java调用peopleSoft webservice

本文介绍如何使用Java客户端调用PeopleSoft系统的WebService。通过具体示例展示了如何构建SOAP请求、发送HTTP POST请求及解析响应。文中还提供了完整的代码实现,并指出了几个关键步骤。
1、peopleSoft系统webservice发布成功后,会提供一个wsdl URL地址,如:

2、利用SOAPUI工具,可查看出SOAP请求XML,

3、java客户端可以模拟SOAP请求,注意以下几点:
3.1 请求URL地址并非是wsdl地址,而是“ http://IP:port/PSIGW/PeopleSoftServiceListeningConnector/XXX”
3.2 请求时需要设置请求的header,SOAPAction=XXXXX,
3.3 遵循SOAPUI中的RAW窗口展示的请求方式,如下图


4、代码实现如下:
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.w3c.dom.Document;

public class WebServiceClient {

	public static void main(String[] args) throws Exception {
		test2();
	}

	public static void test2() throws Exception {
		String soapRequestData = "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:bl='http://xmlns.oracle.com/Enterprise/Tools/schemas/BL_MRYSTS_REQAPRVL_REQ.V1'> "
				+ " <soapenv:Header/> "
				+ "  <soapenv:Body> "
				+ "     <parameter> "
				+ "      <bl:EMPLID>10086</bl:EMPLID> "
				+ "      <bl:APRVLSTS>SUB</bl:APRVLSTS>"
				+ "   	 <bl:MRYSTS>S</bl:MRYSTS>"
				+ "  </parameter>"
				+ "  </soapenv:Body>" 
				+ " </soapenv:Envelope>";
		System.out.println("soapRequestData=" + soapRequestData);
		PostMethod postMethod = new PostMethod("http://IP:port/PSIGW/PeopleSoftServiceListeningConnector/PSFT_HR");
		try {
			byte[] b = soapRequestData.getBytes("utf-8");
			InputStream is = new ByteArrayInputStream(b, 0, b.length);
			org.apache.commons.httpclient.methods.RequestEntity re = new InputStreamRequestEntity(is, b.length,"text/xml;charset=utf-8");
			postMethod.setRequestEntity(re);
			postMethod.setRequestHeader("SOAPAction", "BL_MRYSTS_REQAPRVL.v1");
			HttpClient httpClient = new HttpClient();
			int status = httpClient.executeMethod(postMethod);
			InputStream in = postMethod.getResponseBodyAsStream();

			DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
			DocumentBuilder db = bf.newDocumentBuilder();
			Document document = db.parse(in);
			String res = document.getElementsByTagName("ResponseInfo").item(0)
					.getTextContent();
			System.out.println(res);
			System.out.println(in);
			System.out.println(status);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (HttpException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

5、测试运行环境:
JDK1.7,
所需jar包,maven地址如下:
<dependency>
	<groupId>commons-logging</groupId>
	<artifactId>commons-logging</artifactId>
	<version>1.1.1</version>
</dependency>

<dependency>
	<groupId>commons-codec</groupId>
	<artifactId>commons-codec</artifactId>
	<version>1.4</version>
</dependency>

<dependency>
	<groupId>commons-httpclient</groupId>
	<artifactId>commons-httpclient</artifactId>
	<version>3.1</version>
</dependency>






<think>首先,用户的问题是关于如何在PeopleSoft调用进程。用户说:“我想调用PeopleSoft进程的方法或步骤” 或 “PeopleSoft进程调用方法”。所以,我需要提供调用PeopleSoft进程的步骤或方法。 现在,回顾系统级指令: - 所有行内数学表达式必须使用$...$格式。但在这个上下文中,问题似乎不涉及数学表达式,所以可能不需要。 - 独立公式必须使用$$...$$格式并单独成段。同样,可能不适用。 - LaTeX语法正确:确保任何数学内容正确,但这里可能没有。 - 使用中文回答:整个回答必须用中文。 - 生成相关问题:在回答末尾,生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识:例如[^1]。我需要参考提供的引用内容。 提供的引用内容: - [^1]: 关于JOLT和Tuxedo的解释。 - [^2]: PeopleSoft应用服务器上的进程含义,如PSAPPSRV等。 - [^3]: 如何通过SQL汇总进程运行状态。 - [^4]: 如何删除PeopleSoft进程服务器定义。 用户的问题是关于调用进程,而不是删除或汇总状态。所以,我需要从这些引用中提取相关信息。 从引用[^2],它描述了各种进程,如PSAPPSRV用于构建HTML页面等,但没有直接说明如何调用进程。 调用进程通常指的是在PeopleSoft中调度或启动一个后台进程,比如运行一个报表或作业。 在PeopleSoft中,调用进程通常通过Process Scheduler来完成。用户可以通过Process Scheduler界面来提交进程请求。 步骤可能包括: 1. 登录到PeopleSoft应用程序。 2. 导航到Process Scheduler页面。 3. 选择要运行的进程。 4. 设置参数(如果有)。 5. 提交进程。 引用中没有直接给出步骤,但引用[^3]提到了PSPRCSRQST表,这是进程请求表,所以它涉及进程调度。 引用[^4]是关于删除服务器定义,不直接相关。 所以,我需要基于一般知识来回答,但尽可能参考引用。 结构回答: - 回答应清晰、结构清晰,帮助用户逐步解决问题。 - 由于用户要求“调用PeopleSoft进程的方法或步骤”,我将提供步骤。 可能的步骤: 1. **登录PeopleSoft应用程序**:用户需要访问PeopleSoft系统。 2. **导航到Process Scheduler**:通常通过菜单导航到Process Scheduler部分。 3. **选择进程**:在Process Scheduler中,选择要运行的进程类型。 4. **配置参数**:设置进程所需的参数,如输出格式、运行时间等。 5. **提交进程**:提交请求,进程将被调度运行。 6. **监控进程**:用户可以在Process Monitor中查看进程状态。 从引用[^3],有SQL查询可以汇总进程状态,所以监控部分可以参考。 引用[^2]提到PSAPPSRV处理用户请求,但调用进程更具体。 在回答中,引用相关部分。 例如: - 当调用进程时,它可能涉及JOLT和Tuxedo(从[^1])。 - 进程如PSAPPSRV处理某些请求(从[^2])。 - 状态可以通过SQL监控(从[^3])。 但核心步骤是用户界面操作。 生成相关问题:在末尾添加相关问题。 例如: 1. 如何监控PeopleSoft进程状态? 2. 如何配置Process Scheduler? 3. PeopleSoft进程调用的常见问题? 确保回答真实可靠。既然引用是提供的,我应该基于它们。 用户的问题: "我想调用PeopleSoft进程的方法或步骤" 或 "PeopleSoft进程调用方法"。 所以,我将提供方法或步骤。 用中文回答。 大纲回答: 1. 介绍:简要解释PeopleSoft进程调用。 2. 步骤:详细步骤。 3. 引用:在适当地方添加引用。 4. 相关问题:在末尾添加。 步骤: - 步骤1: 登录PeopleSoft应用程序。 - 步骤2: 导航到Process Scheduler。 - 步骤3: 选择并配置进程。 - 步骤4: 提交进程请求。 - 步骤5: 监控进程运行。 参考引用: - 当提到进程运行时,可以引用[^3]关于状态监控。 - 提到服务器进程时,引用[^2]。 例如:"在调用进程后,您可以通过SQL查询监控运行状态[^3]。" 添加代码示例?引用中没有代码,但用户可能不需要代码。 在引用[^4]有SQL删除,但不相关。 保持简洁。 最后,添加相关问题。</think>### PeopleSoft进程调用方法 在PeopleSoft中,调用进程通常指通过Process Scheduler调度和运行后台进程(如报表生成、批处理作业等)。以下是基于标准PeopleSoft操作流程的详细步骤,结合相关引用内容确保可靠性。整个过程涉及用户界面操作和服务器端协调(如JOLT和Tuxedo处理请求[^1])。以下步骤假设您已拥有适当的权限。 #### 调用PeopleSoft进程的步骤 1. **登录PeopleSoft应用程序** - 使用您的凭据登录PeopleSoft系统(如通过浏览器访问PIA入口)。 - 确保您有权限访问Process Scheduler功能(通常需“Process Scheduler User”角色)。 2. **导航到Process Scheduler页面** - 在主菜单中,依次选择 **“PeopleTools”** > **“Process Scheduler”** > **“Processes”**(或类似路径,具体取决于您的模块)。 - 这里会列出所有可用的进程类型(如PSAPPSRV用于处理用户请求和SQL执行[^2])。 3. **选择并配置进程** - 在进程列表中,选择您要调用的进程(例如,运行一个报表或批处理作业)。 - 点击 **“Run”** 按钮,进入参数配置页面。 - 设置必要参数,如输出格式(PDF、Excel)、运行时间(立即或定时)、服务器选择等。 - 如果需要,添加运行时选项(如覆盖默认值)。 - 注意:某些进程(如PSQRYSRV)专门处理查询请求,如果未启动可能影响性能[^2]。 4. **提交进程请求** - 确认所有参数后,点击 **“OK”** 或 **“Submit”** 提交请求。 - 系统会将请求发送到Process Scheduler服务器,JOLT作为web server和application server之间的桥梁处理此请求[^1]。 - 提交后,系统生成一个进程实例号(PRCSINSTANCE),用于跟踪。 5. **监控进程状态** - 导航到 **“Process Monitor”** 页面(路径:**“PeopleTools”** > **“Process Scheduler”** > **“Process Monitor”**)。 - 输入您的进程实例号或搜索相关进程,查看实时状态(如“Processing”、“Success”或“Error”)。 - 您还可以使用SQL查询汇总状态(参考引用[^3]),例如: ```sql SELECT RUNSTATUS, PRCSTYPE, COUNT(PRCSINSTANCE) AS TOTAL_PROCESSES FROM PSPRCSRQST WHERE PRCSINSTANCE = [您的实例号] GROUP BY RUNSTATUS, PRCSTYPE; ``` 这有助于快速诊断问题(如运行失败时检查RUNSTATUS值)。 #### 关键注意事项 - **服务器依赖**:进程调用依赖于PeopleSoft应用服务器进程(如PSAPPSRV处理SQL请求和身份验证[^2])。如果进程未启动,需通过psadmin工具启动相关domain。 - **错误处理**:如果调用失败,检查Process Scheduler日志(通常位于服务器日志目录),常见原因包括参数错误或服务器资源不足。 - **性能优化**:对于高频调用,考虑优化进程配置(如调整PSQRYSRV设置以提升查询性能[^2])。 调用进程后,状态会记录在系统表中(如PSPRCSRQST),便于审计和分析[^3]。如果您在克隆环境后遇到无效服务器定义(如残留的生产服务器名称),需先清理(方法参考引用[^4]),以避免运行时错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值