如将mirror主机转为生产机:详细操作步骤或命令
InterSystems Caché 是一个多模型 DBMS 和应用服务器。
查看此处提供的更多详细信息。
文档。
如将mirror主机转为生产机:详细操作步骤或命令
手册帮助程序员使用%Net包中的一些关键类,这些类为许多有用的Internet协议提供了易于使用的接口。因为这个包的类文档相当广泛,所以本手册提供了一个快速、有条理的概述,而不是深入研究每个参数、属性和方法。熟悉本手册中提到的协议和第三方工具。
下一期系列将用一个月的时间连载,《Caché XML》,敬请期待。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f9VqwzNP-1608850948003)(3E1D939266954ED48BDAEA9B8086B11E)]](https://img-blog.csdnimg.cn/20201225070433434.png)
%JSON快速参考本节提供本章中讨论的%JSON方法、属性和参数的快速参考。
%JSON.Adaptor方法这些方法提供了从JSON序列化和序列化到JSON的能力。
%JSON.Adaptor.%JSONExport()将启用的类序列化为JSON文档,并将其写入当前设备。
method %JSONExport(%mappingName As %String = "") as %Status
%mappingName(可选)-要用于导出的映射的名称。基本映射由"" 表示,并且是默认映射。%JSON.Adaptor.%JSONExportToStream()将启用`JSON的类序列化为JSON文档并将其写入流。
export - 包含序列化的JSON文档的导出流。%mappingName(可选)-要用于导出的映射的名称。基本映射由表示,并且是默认映射。将启用JSON的类序列化为JSON文档,并将其作为字符串返回。
将JSON或动态实体输入导入此对象。
JSON适配器是一种将ObjectScript对象(registered, serial or persistent)映射到JSON文本或动态实体的方法。本章涵盖以下主题:
JSON的对象并演示%JSON.Adaptor导入和导出方法从JSON序列化或序列化到JSON的任何类都需要子类%JSON.Adaptor,它包括以下方法:
%JSONExport()将启用JSON的类序列化为JSON文档,并将其写入当前设备。%DynamicAbstractObject的子类导入,并返回启用JSON的类的实例。为了演示这些方法,本节中的示例将使用这两个类:
Class Model.Location Extends (%Persistent, %JSON.Adaptor)
{
Property City As %String;
Property Country As %String;
}
web是围绕请求/响应范例构建的:客户机向服务器发送请求,服务器通过向客户机发送响应进行响应。此范式和HTTP本身不允许此通信协议的反向形式,即服务器与客户机启动请求/响应周期。已经开发了许多技术来解决了这个问题,即服务器可以启动与客户机的对话。这些技术通常被称为基于推送或 comet-based的技术,它们都存在不适合在web基础设施上进行全面部署的问题。目前使用的三种主要技术如下所述。
使用这种技术,客户端定期发送HTTP请求来检测服务器状态的变化,服务器被编程为立即响应。空响应表示没有变化。
问题:
HTTP请求/响应往返过程,这会导致大量的HTTP流量,而这又会给服务器和网络基础设施带来无法接受的负担使用这种技术,客户端发送请求,但服务器只在需要通知客户端更改时才响应。客户端通常在服务器发送响应消息时发送另一个“长轮询”请求。
问题:
下面是%Net中其他一些有用类的简短列表:
InterSystems IRIS提供了一个实用程序类%Net.URLParser,可以使用它将URL字符串解析为其组成部分。例如,当您重定向HTTP请求时,这很有用。
该类包含一个类方法Parse(),它接受一个包含URL值的字符串,并通过引用返回一个包含URL各部分的数组。例如:
/// w ##class(PHA.TEST.HTTP).URLParser()
ClassMethod URLParser()
{
Set url = "https://www.google.com/search?q=Java+site%3Adocs.intersystems.com&oq=Java+site%3Adocs.intersystems.com"
Do ##class(%Net.URLParser).Parse(url,.components)
zw components
}
返回时,组件将包含此URL各部分的数组:
| Element | Value | Description |
|---|---|---|
components("fragment") |
null |
URL的片段(#字符后面) |
components("host") |
URL请求的主机 | |
| w | URL的网络地址 |
%Net.SSH软件包支持SSH(安全外壳)通信。本主题简要介绍此包中的类。
%Net.SSH.Session表示会话。要使用此类,请执行以下操作:
Connect()实例方法连接到服务器。AuthenticateWithKeyPair()或向服务器验证身份。%Net.SSH.Session的其他方法执行进出远程系统的单个文件的SCP(安全复制)操作、执行远程命令、传输TCP通信或执行SFTP操作。例如,使用将会话用于操作。此方法通过引用返回可用于操作的实例。
重要提示:有关可以使用这些类的受支持平台的信息,请参阅和的类参考。
以下方法显示了如何通过SFTP在服务器上写入文件列表:
Method SFTPDir(ftpserver, username, password) As %Status
{
set ssh = ##class(%Net.SSH.Session).%New()
do ssh.Connect(ftpserver)
do ssh.AuthenticateWithUsername(username,password)
//open an SFTP session and get that returned by reference
do ssh.OpenSFTP(.sftp)
//get a list of files
do sftp.Dir(".",.files)
set i=$ORDER(files(""))
while i'="" {
write $listget(files(i),1),!
set i=$ORDER(files(i))
}
quit $$$OK
}
按照此网址的指示 https://gettingstarted.intersystems.com/language-quickstarts/java-quick… 下载quickstarts-java示例代码 运行xepplaystocktsTask1模块程序提示InterSystems XEP is not supported by the specified server 请问有人知道具体原因吗我的server有什么不对吗。
使用客户端的server manager添加server没有server类型的选项,是因为我使用的cache版本目前不支持吗
要检索邮件,请执行以下操作:
%Net.MQRecv的实例。Connection对象有一个消息队列,可以从中检索消息。%Get()-通过引用返回字符串消息作为第一个参数。Filename属性才能对其进行初始化。不支持二进制流。WebSphere MQ返回2033。示例1:ReceiveString()
下面的类方法从队列检索消息。
///Method returns string or null or error message
ClassMethod ReceiveString() As %String
{
Set recv=##class(%Net.MQRecv).%New()
Set queue="mqtest"
Set qm="QM_antigua"
Set chan="S_antigua/TCP/antigua(1414)"
Set logfile="c:\mq-recv-log.txt"
Set check=recv.%Init(queue,qm,chan,logfile)
If 'check Quit recv.%GetLastError()
Set check=recv.%Get(.msg)
If 'check {
Set reasoncode=recv.%GetLastError()
If reasoncode=2033 Quit ""
Quit "ERROR: "_reasoncode
}
Quit msg
}
InterSystems IRIS为IBM WebSphere MQ提供了一个接口,可以使用该接口在InterSystems IRIS和IBM WebSphere MQ的消息队列之间交换消息。要使用此接口,必须能够访问IBM WebSphere MQ服务器,并且IBM 客户端必须与InterSystems IRIS在同一台计算机上运行。
该接口由和类组成,这两个类都是%Net.abstractMQ的子类。这些类使用由InterSystems IRIS在所有合适的平台上自动安装的动态链接库。(这是Windows上的;其他平台的文件扩展名不同。)。反过来,InterSystems IRIS动态链接库需要IBM 动态链接库。
该界面仅支持发送和接收文本数据,不支持二进制数据。
通常,要使用IBM 的InterSystems IRIS接口,请执行以下操作:
IBM WebSphereMQv7.x或更高版本。具体而言:WebSphere MQ客户端必须与InterSystems IRIS安装在同一台计算机上。请注意,安装程序会根据需要更新环境变量并添加其他系统变量。IRIS提供了一个类%Net.FtpSession,可以使用它从InterSystems IRIS内建立与FTP服务器的会话。
要建立FTP会话,请执行以下操作:
%Net.FtpSession的实例。Timeout 超时指定等待FTP服务器回复的时间(以秒为单位)。SSLConfiguration指定用于连接的激活的SSL/TLS配置(如果有)。如果FTP服务器使用HTTPS,请使用此选项。若要禁用此检查,请将属性设置为0。
Connect()方法以连接到特定的FTP服务器。ascii()或方法将传输模式分别设置为ASCII模式或二进制模式。要查看当前传输模式,请检查实例的Type属性的值。注意:的每个方法都返回一个状态,应该检查该状态。这些方法还设置提供有关会话状态的有用信息的属性的值:
ReturnMessageIris提供了一个可以用于创建MultiPart Mime消息(%Net.MimePart)的类。创建要添加到SOAP消息的附件时,请使用此类;请参阅创建Web服务和Web客户端。因为是一个常见的标准,所以有许多其他可能的应用程序,例如电子邮件处理和HTTP Multipart Post。
MIME格式的文档被称为MIME部分。每个MIME部件都有标题,包含邮件正文(文本或二进制)或包含额外的MIME部件。具有MIME版本标题的MIME部分可以用作顶级文档,称为MIME消息。下图显示了示例:
在该示例中,E和F具有未显示的附加子部分。
要表示MIME部件,请使用 类,该类提供用于设置零件的标题和内容的属性。
要创建一个MIME部件,执行以下步骤:
%Net.MIMEPart的实例。Body属性设置为等于该流。使用标准流接口将数据写入此流。不要为属性指定值。可以设置和获取标头的值。
本节介绍如何处理通过%Net.POP3检索到的电子邮件(%Net.MailMessage)。
检索电子邮件(%Net.MailMessage)后,通常首先确定它是哪种类型的邮件以及如何阅读它;也就是说,它是否是多部分邮件以及各部分是否是二进制的。在此步骤中,您可以使用属性。或者,可以使用IsBinary、和属性,它们间接提供与相同的信息。
如果消息是多部分消息,则每个部分都是的一个实例。
消息本身和消息的每个部分都有一组标头。
和%Net.MailMessagePart类提供的属性使可以轻松访问最常用的标头。例如,%Net.MailMessage提供收件人、发件人、主题和日期等属性。数组属性允许访问任何自定义标题.
此外,如果已通过检索到消息,则可以使用方法。在给定标头名称和属性的情况下,此方法返回该属性的值。
了解常规消息结构后,请使用以下技术检索内容:
Parts属性,该属性是部分的数组。Parts.Count()给出部件的数量。每个部件的键都是一个整数,从1开始。使用方法检索给定的部件。消息部分是的实例。IsHTML单位cache2016.2用rose做的双机,数据库放在阵列上,通过rose切换挂载同一个阵列磁盘,本质上是一个实例,另外做了个mirror机。
这样的结构在容灾备份上有什么问题没,希望给点建议。谢谢
Content-Disposition标头可以指定附件,可以带文件名,也可以不带文件名。例如:
Content-Disposition: attachment; filename=genome.jpeg;
如果Content-Disposition标头确实指定了附件,则%Net.POP3实例可以将邮件中的所有附件保存到文件。要实现这一点,请执行以下操作:
%Net.POP3实例的以下属性:StoreAttachToFile指定为%1。AttachDir指定有效目录。根据操作系统的不同,确保使用斜杠()或反斜杠()结束目录名称。还要确保该目录已经存在,并且用户对其具有写访问权限。%Net.POP3实例的Fetch()或FetchMessage()。每个文件名的确定方式如下:
请注意以下几点:
Dir和FileName属性。它们仅在将附件上载到邮件时才相关,如向邮件添加附件中所述。示例:
下面的示例方法在给定实例和邮件编号的情况下检索整个邮件:
嗨,社区,
我正在尝试访问对象的另一个进程的内容,例如%request和%session。我正在使用类/方法“%SYS.ProcessQuery:VariableByPid”。有谁知道如何从数据库服务器上运行的一个进程中获取诸如%request.Data(“ ID”,1)之类的属性的值?
我想做的例子:
set rs=##class(%ResultSet).%New("%SYS.ProcessQuery:VariableByPid")
set tsc=rs.Execute(ProcessID,"%request")
while rs.%Next() {
w "Name:"_$g(rs.Data("Name")),!
w "Value:"_$g(rs.Data("Value")),!
}
do rs.Close()
Output:
Name:%request
Value:1@%CSP.Request
我只是可以看到对象引用1@%CSP.Request,我不确定我们是否有办法检查对象属性。
如果拥有所需的权限,并且邮件服务器正在运行,则可以使用POP3协议从该服务器下载和处理电子邮件。通常,要与POP3服务器通信,请登录,执行一系列影响邮箱的操作,然后提交或回滚任何更改。要在系统间IRIS中执行此操作,请执行以下操作:
%Net.POP3的实例。此对象描述将使用的POP3服务器。%Net.POP3实例的以下属性:timeout 超时-指定读取超时(以秒为单位);默认值为30秒。Content-Disposition;附件标题时)是否将每个附件保存到文件。默认值为False。请注意,除非还设置了,否则此设置不起任何作用。AttachDir,否则此设置不起任何作用。可以将附件添加到电子邮件或消息部分(具体地说,是添加到%Net.MailMessagePart或%Net.MailMessage的实例)。要执行此操作,请使用以下方法:
这些方法中的每一种都会将附件添加到原始邮件(或邮件部分)的Parts数组中,并自动将属性设置为1。
method AttachFile(Dir As %String,
File As %String,
isBinary As %Boolean = 1,
charset As %String = "",
ByRef count As %Integer) as %Status
将给定文件附加到电子邮件。默认情况下,文件以二进制附件的形式发送,但您可以将其指定为文本。如果文件是文本,还可以指定该文件使用的字符集。
具体地说,此方法创建的实例,并根据需要将文件内容放在BinaryData或属性中,并根据需要设置属性和属性。该方法通过引用返回一个整数,该整数指示此新消息部分在部件数组中的位置。
此方法还设置消息或消息部分的和属性。
method AttachStream(stream As %Stream.Object,
Filename As %String,
isBinary As %Boolean = 1,
charset As %String = "",
ByRef count As %Integer) as %Status
cache2016开始提供了支持JSON的系统类,%DynamicAbstractObject ,
不知是否可将这些系统类导入到之前的版本(如), 从而实现支持操作,或者是有何其他简单的解决办法
目前不论开发和项目的数据库版本大部分是,且广泛使用,但当偶尔向低版本用户部署程序时,会遇到对JSON支持的问题
新安装的cache,本地可以连接terminal,远程主机连接失败,telnet 23端口失败
我本人和其他技术架构师经常需要向客户和供应商说明 Caché IO 要求以及 Caché 应用程序使用存储系统的方式。 在向客户和供应商说明典型的 Caché IO 配置文件和事务性数据库应用程序的要求时,下面的表格很有用。 原始表格由 Mark Bolinsky 创建。
在以后的帖子中,我将讨论更多关于存储 IO 的内容,所以现在贴上这些表格也作为将来文章的参考。
您的应用程序已部署,一切运行正常。 很好,击个掌! 然后电话突然响个不停 – 用户投诉应用程序有时很“慢”。 这是什么意思? 有时? 您有哪些工具,查找和解决这个缓慢问题应查看哪些统计数据? 您的系统基础架构是否能承担用户负载的任务? 在投入生产之前,应该询问哪些基础架构设计问题? 如何自信地为新硬件规划容量,而不会过度规定? 如何停止电话铃声? 如何一开始就不让它响?
本主题描述如何使用InterSystems IRIS发送和接收MIME电子邮件消息。
注意:本主题中的示例是经过组织的,因此管理电子邮件的方法可以用于不同的电子邮件服务器,这在测试和演示期间非常有用。这不一定是最适合生产需要的代码组织。
电子邮件使用标准协议通过Internet发送消息。 InterSystems IRIS支持以下三种协议:
MIME电子邮件的对象表示形式。它支持文本和非文本附件、单部分或多部分邮件正文,以及ASCII和非ASCII字符集的标题。POP3从电子邮件服务器检索电子邮件,是从远程服务器检索电子邮件的最常用标准。注意:InterSystems IRIS不提供邮件服务器。相反,它提供了连接到邮件服务器并与之交互的功能。
首先,了解InterSystems IRIS如何表示电子邮件非常有用。
通常,多部分MIME邮件由以下部分组成:
对于多部分消息,头必须是多部分/混合或多部分的其他子类型;MIME
创建HTTP请求后,使用以下方法之一发送该请求:
method Delete(location As %String = "",
test As %Integer = 0,
reset As %Boolean = 1) as %Status
发出HTTP DELETE请求。
method Get(location As %String = "",
test As %Integer = 0,
reset As %Boolean = 1) as %Status
发出HTTP GET请求。此方法使Web服务器返回请求的页面。
method Head(location As %String,
test As %Integer = 0,
reset As %Boolean = 1) as %Status
发出HTTP Head请求。此方法使Web服务器仅返回响应头,而不返回正文。
可以设置和获取HTTP标头的值。
%Net.HttpRequest的以下每个属性都包含具有相应名称的HTTP标头的值。如果不设置这些属性,则会自动计算它们:
AuthorizationContentEncodingContentLength(此属性为只读。)ContentCharset (指定标题的字符集部分。如果设置此属性,则必须首先设置ContentType属性。)IfModifiedSince类提供可用于设置和获取主HTTP标头的常规方法。这些方法忽略和其他实体标头。
返回包含此请求中的主HTTP标头的字符串。
将主标头写入当前设备。
返回此请求中设置的任何主HTTP标头的当前值。此方法接受一个参数,即头的名称(不区分大小写);这是一个字符串,如Host或Date
设置标题的值。通常,可以使用它来设置非标准标头;大多数常用标头都是通过Date等属性设置的。此方法有两个参数:
不能使用此方法设置实体标头或只读标头(
IRIS提供了用于对应用程序进行单元测试的类的%UnitTest包。该包为快速开发单元测试类、执行测试和创建报告提供了便利。可以直接使用该包,也可以扩展其类来自定义单元测试工具。%UnitTest在结构上与用于单元测试的xUnit框架非常相似。熟悉这些框架的开发人员使用%UnitTest会特别容易。
本教程提供对%UnitTest包的快速实践介绍。本教程的第一部分和第二部分是相互独立的,可以按任何顺序完成。
注意:本教程假定基本熟悉ObjectScript和InterSystems IRIS的面向对象开发。
下一期系列将用一个月的时间连载,《Caché 网络实用工具》,敬请期待。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f9VqwzNP-1608850948003)(3E1D939266954ED48BDAEA9B8086B11E)]](https://img-blog.csdnimg.cn/20201225070433434.png)
那些已经与ECP合作过的人可能知道它不仅在操作系统,处理器技术(big-little-endian),但在C / E的各个版本中也有限制。
此交叉版本功能还包括IRIS(针对2020.1进行了验证)和C / E(2018.3)
我面临着同时在IRIS和CACHÉ上开设一堆课程的挑战
直到所有系统都迁移到IRIS。
在Caché开发环境中应用更改并迁移到IRIS没问题
但是,如果我必须对IRIS进行修复,似乎没有干净的方法可以返回Caché。
以通常的方式执行新的单元测试。
^UnitTestRoot的值设置为包含测试类的目录的父级:USER> Set ^UnitTestRoot="c:\unittests"
%UnitTest.Manager执行测试:USER> Do ##class(%UnitTest.Manager).RunTest("mytests")
===============================================================================
Directory: C:\unittests\mytests\cls\MyPackage\
===============================================================================
mytests\cls\MyPackage begins ...
Load of directory started on 01/09/2018 14:36:57 '*.xml;*.XML;*.cls;*.mac;*.int;*.inc;*.CLS;*.MAC;*.INT;*.INC'
Loading file C:\unittests\mytests\cls\MyPackage\Tests.xml as xml
Imported class: MyPackage.Tests
Compilation started on 01/09/2018 15:44:01 with qualifiers ''
Compiling class MyPackage.Tests
Compiling routine MyPackage.Tests.1
Compilation finished successfully in 0.033s.
Load finished successfully.
MyPackage.Tests begins ...
TestAdd() begins ...
AssertEquals:Test Add(2,2)=4 (passed)
AssertNotEquals:Test Add(2,2)'=5 (passed)
LogMessage:Duration of execution: .000073 sec.
TestAdd passed
TestEditContact() begins ...
AssertStatusNotOK:ContactType = Friend (passed)
AssertStatusOK:ContactType = Personal (passed)
LogMessage:Duration of execution: .001227 sec.
TestEditContact passed
MyPackage.Tests passed
mytests\cls\MyPackage passed
Use the following URL to view the result:
http://10.0.75.1:52773/csp/sys/%25UnitTest.Portal.Indices.cls?Index=10&$NAMESPACE=USER
All PASSED
webservice服务,在浏览器中调用成功,在soapui工具中调用失败“wsse:FailedAuthentication”