首先,只是一些背景知识:
我们的一位客户正在经历运行我们的一个Web应用程序的WebSphere实例的CPU使用率峰值(其他应用程序的其他实例都很好).他们有一个测试环境和一个现场环境(两个iSeries)都遇到了问题 - 每个实例设置一个应用程序.我们已经在我们自己的测试环境中本地部署了此应用程序,也为iSeries上的许多其他客户部署了此应用程序,没有类似的问
实际发生了什么:
每隔一秒左右,用于WebSphere Process'的CPU使用率的CPU使用率从跳转到任何地方7%- 20%即使没有当时正在处理的请求.客户报告看到峰值高达30%.这些尖峰平均出是1.5%CPU的整体-其他WebSphere情况下通常使用0%- 0.1%在空闲时.
到目前为止我的调查
所以,我看了一下线程.测试环境中的一个线程是~350每秒使用CPU周期.它们的实时环境中的一个类似线程是~1500每秒使用CPU周期(表明它有更大的CPU).这些线程的调用堆栈看起来像
Type Program Statement Procedure
QLESPI QSYS 17 LE_Create_Thread2__FP12crtt >
QJVALIBJVM QSYS 7 startThread__FPv
J com/ibm/ws/util/Threa > run
J com/ibm/ws/util/Threa > run
J com/ibm/ws/util/Threa > getTask
J com/ibm/ws/util/Bound > poll
Run Code Online (Sandbox Code Playgroud)
底线的整个班级名称是com/ibm/ws/util/BoundedBuffer.我让客户为我做了一个JVM转储 - 我从中得到的唯一补充信息是线程名称:
Thread: 00002F82 Deferrable Alarm : 11
Run Code Online (Sandbox Code Playgroud)
现在我的问题:
Deferrable Alarm?从JVM转储中,我可以看到4个具有此名称的线程.其他三个似乎做得很好.通过调试我的本地WebSphere(在Windows上)并在BoundedBuffer类中添加断点,我看到BoudedBuffers正在轮询并定期调用一些侦听器.在AS400/iSeries/System-i /是否有一个SQL命令将列添加到特定序号位置的表,或将现有列移动到其他位置?
我们需要能够从在iSeries LPAR(V6R1)上运行的COBOL代码调用内部Web服务.我经历了一个完整的例子,我能在网上找到的工作在这里.因此,我的下一步是尝试重复此过程并调用我们现有的Web服务之一.
我使用QSH的WSDL2WS命令生成C客户端存根.我修改了示例COBOL客户端程序并尝试调用我的Web服务.我遇到的问题似乎与示例C客户端方法返回指针并且COBOL代码将它们分配给指针的事实有关.我怀疑我的COBOL代码中的错误是我的问题的根源,因为WSDL2WS为我的Web服务方法创建的C方法返回一个简单的xsdc_string而不是指向自定义结果类型的指针:
xsdc__string TestUnsuccessfulMessage(AXISCHANDLE stub)
{
AXISCHANDLE call = axiscStubGetCall(stub);
xsdc__string Ret = NULL;
axiscCallSetSoapFaultNamespace(call, "http://myserver/PSItemMaintenance/ItemMaintenanceService.svc");
// ======================================================================
// Initialize client engine, set SOAP version, SOAPAction, operation, etc.
// ======================================================================
if (AXISC_SUCCESS != axiscCallInitialize(call, C_DOC_PROVIDER ))
return Ret;
if (NULL==axiscCallGetTransportProperty(call,"SOAPAction",0))
axiscCallSetTransportProperty(call,AXISC_SOAPACTION_HEADER , "http://tempuri.org/IItemMaintenanceService/TestUnsuccessfulMessage");
axiscCallSetSOAPVersion(call, SOAP_VER_1_1);
axiscCallSetOperation(call, "TestUnsuccessfulMessage", "http://tempuri.org/");
// ======================================================================
// Apply SSL configuration properties and user-set SOAP headers.
// ======================================================================
axiscStubIncludeSecure(stub);
axiscStubApplyUserPreferences(stub);
// ======================================================================
// Invoke web service, send/receive operation. Handle output parameters, if any.
// …Run Code Online (Sandbox Code Playgroud) 我公司最近使用tivoli工作负载调度程序(TWS)远程触发从z/OS到窗口服务器的作业.我们测试过tivoli可以成功触发mssql服务.
现在的问题是我们有一个.NET CL程序,我们每天使用它来将AS400中的一些数据提取到mssql服务器,它在使用Windows调度程序之前工作得很好,并且在特定时间范围内每天触发.现在我们尝试集中调度程序,以便TWS远程触发准备好的批处理文件(它将触发CL程序).
但尝试连接到AS400 DB时,CL程序的执行显示以下错误.
.Net Framework数据提供程序需要Microsoft数据访问组件(MDAC).请安装Microsoft数据访问组件(MDAC)版本2.6或更高版本.
编辑:在正常情况下,我们假设程序可以成功触发,它应该就像使用Windows调度程序,设置计划并执行它.唯一的区别是调度程序现在不是Windows调度程序,而是切换到TWS并远程触发CL程序.但执行程序在执行CL程序时显示上述错误.我们不知道为什么会出现这个错误.我们试图重新运行CL程序并在Windows调度程序中安排它,工作正常.但远程安排TWS,错误.
对于我们迄今为止所做的测试和观察:
我们的服务器是Windows server 2008 SP2 x64,我已经对旧版Windows中使用的MDAC进行了一些研究,而server 2008应该提供更新版本的MDAC(WDAC 6.0)并且无法重新安装,所以我假设MDAC/WDAC必须是正确安装.
CL程序是用.NET 2.0/3.0/3.5编译的,并且测试了所有这些程序都会产生相同的错误.
他们的错误日志能够生成到sql server DB,所以我假设在CL程序中使用的连接驱动程序没有问题.但它可能是由IBMDA400驱动程序引起的.
TWS使用我们服务器中的管理员帐户来触发批处理文件,我们的服务器中安装了一个TWS客户端(监听器)用于我们服务器中的触发程序,但是我们不知道他们如何连接到我们的服务器(SSH?telnet?)和他们似乎没有实际登录到我们的服务器进行远程触发(在静默模式下触发我们的工作).
我们迫切希望寻求任何解决方案,如果有人能提供任何线索或想法,那将是非常有帮助的,并为将来有同样问题的人们提供大帮助.
非常感谢你!.
新来的!
情况:我正在开发一个需要与AS/400服务器通信的项目.我的任务是基本上处理将发送到AS/400服务器的请求.为此,所有用户输入应为EDCDIC字节.
问题:
我已设法将压缩小数转换为String,其代码如下,在此论坛中找到:
public class PackedDecimal {
public static long parse(byte[] pdIn) throws Exception {
// Convert packed decimal to long
final int PlusSign = 0x0C; // Plus sign
final int MinusSign = 0x0D; // Minus
final int NoSign = 0x0F; // Unsigned
final int DropHO = 0xFF; // AND mask to drop HO sign bits
final int GetLO = 0x0F; // Get only LO digit
long val = 0; // Value to return
for (int i …Run Code Online (Sandbox Code Playgroud) 当我使用com.ibm.as400.access.AS400.validateSignon()来验证用户的凭据并且他们通过验证并且已成功连接时,它不会将"失败的登录尝试"重置为0.
输入错误密码时,"登录尝试失败"字段会递增; 成功签署"失败的登录尝试"仍然保持有无效的登录.奇怪的是,"之前的登录"会使用正确的日期和时间进行更新.
这是as400上的DSPUSRPRF转储:
User profile . . . . . . . . . . . . . . . : BOB
Previous sign-on . . . . . . . . . . . . . : 12/12/05 21:34:08
Password verifications not valid . . . . . : 4
Status . . . . . . . . . . . . . . . . . . : *ENABLED
Run Code Online (Sandbox Code Playgroud)
我唯一能够通过使用工具箱禁用和重新启用用户来重置"失败登录尝试".这不是一个可行的解决方案,因为它会更新用户配置文件的更改日期和时间.
这种行为与处理我们的绿屏telnet会话的方式相矛盾,当用户登录as400时,"失败的登录尝试"被归零.
感谢任何建议和/或决议.
我正在尝试将spring DI集成到现有的jaxws项目中.我已经在tomcat本地工作,但是当我部署到远程容器时,它似乎没有进行类路径扫描.我可以在日志中看到,在tomcat上它将我的@Components注册为bean,但是在远程服务器上它们根本没有被提及.
我看到的是下面的堆栈跟踪.它看起来像是我必须使用的古怪的Web容器.它是"IBM i的集成应用程序服务器".http://www-03.ibm.com/systems/i/software/ias/我相信这是建立在eclipse架构上的,当你安装war文件时,它会将每个应用程序转换为一个包.这很棒,但它打破了我的类路径扫描.:(
有人有解决方案吗?谢谢
673 [Thread-6] WARN org.springframework.core.io.support.PathMatchingResourcePatternResolver - Cannot search for matching files underneath URL [bundleresource://32/com/company/application/] because it does not correspond to a directory in the file system
java.io.FileNotFoundException: URL [bundleresource://32/com/company/application/] cannot be resolved to absolute file path because it does not reside in the file system: bundleresource://32/com/company/application/
at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:205)
at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52)
at org.springframework.core.io.UrlResource.getFile(UrlResource.java:169)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.doFindPathMatchingFileResources(PathMatchingResourcePatternResolver.java:526)
at org.springframework.web.context.support.ServletContextResourcePatternResolver.doFindPathMatchingFileResources(ServletContextResourcePatternResolver.java:92)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:347)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:266)
at org.springframework.context.support.AbstractApplicationContext.getResources(AbstractApplicationContext.java:1269)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:248)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:242)
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:84)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428) …Run Code Online (Sandbox Code Playgroud) 我试图找到所有四个表共有的行.我试过用这个:
SELECT *
FROM TABLE1
INTERSECT
SELECT *
FROM TABLE2
INTERSECT
SELECT *
FROM TABLE3
INTERSECT
SELECT *
FROM TABLE4;
Run Code Online (Sandbox Code Playgroud)
但是没有结果,我知道有些行符合这个要求.因为使用union而不是添加"order by",我会看到来自不同表的四行具有相同的描述.
我们运行Zend Server 7与PHP上V7R1 IBM i.我们使用cURL PHP扩展来调用SSL加密的Web服务.我们需要指定CA证书捆绑包,以便cURL可以验证Web服务证书.
理想情况下,我们想要一些方法来使用SYSTEM证书存储,因此我们只需要在一个地方管理证书,因为我们也从RPG进行SSL加密的Web服务调用.
系统细节:
IBM i:V7R1
PHP:5.4.29
cURL:7.21.0,OpenSSL/0.9.8y
在RPGILE中为AS/400编程的最佳IDE是什么?你可以使用Visual Studios IDE连接到400吗?
我是一名C#程序员,他爱上了Visual Studios,并且比使用pdm编辑器多年来一直使用rpg编程的人更年轻.
我的问题是,有没有办法在RPGILE /连接到Visual Studio中的AS/400?
我的后续问题 - 我应该使用另一个IDE吗?亲爱的上帝,我所需要的只是智能感知!
在此先感谢,并且非常尊重RPG程序员.