用于 Web Services 业务事务的 OASIS WS-CAF 方法

WSServletContextListener 所需jar包 已经经过测试,当你想将SOAP-BASED web servcie部署到tomcat时,先映射为servlet,而用lisenter产生此实例,配置文件为sun-jaxws.xml.但需要你在web-inf/lib下加入所需jar包才可以 立即下载
通过在复杂多方业务操作中提供保证一致的输出,并在生成设计良好的业务流程实现中提供关注点分离,原子事务的概念在创建当今的企业应用程序环境的过程中扮演了基石的角色。

  随着 Web services 已经发展成为在企业间级别上集成流程和应用程序的一种手段,传统的事务语义和协议已被证明是不合时宜的。基于 Web services 的事务俗称业务事务( Business Transaction ),它与传统事务的区别在于,它们的执行期过长,需要提交给事务以便在运行时成为“达成协议的”,而且隔离级别必须放松。

  这个问题的解决方案必须基于 HTTP 协议工作,并包括现有所有类型的事务处理技术:数据库管理系统、应用服务器、消息排队系统和打包的应用程序。解决方案需要支持一些需求,包括从轻量级的应 用程序到复杂的事务,前者的主要目标是让 Web services 知道它们何时位于同一个应用程序中,后者需要花费数天或数周才能完成,并且其跨越的地理范围、时区和企业边界都很广泛。在本文中,我们将考察 OASIS WS-CAF 标准化进程,并说明它是如何尝试解决这个重要而困难的主题的。

简介

  原子事务是用于在出现故障时保证一致性的一项著名技术 [1] 。原子事务的 ACID 属性( Atomicity , Consistency , Isolation , Durability ,即原子性,一致性,隔离性和持久性 )确保了即使是在复杂的业务应用程序中,不管并发的访问和故障情况如何,也可以保持状态的一致性。这是一项十分有用的容错技术,尤其是当涉及到多个可能是远程的资源时。

  以前的事务处理系统在它们解决的问题症结以及它们用来解决它的抽象方面具有很大的通用性。特别地,事务处理系统是针对特定平台而开发的,而且每个系统都假定它单独控制事务域,因此通常不必与其他事务处理系统进行互操作(尽管通过像 X/Open XA 这样的接口通常可以很好地支持与像数据库这样的底层组件的互操作性 )。

  然而,在传统的原子事务系统中,可用的结构化机制是事务的连续而并发的组成部分。如果一个应用程序函数可以表示为一个原子事务,这些机制就已足 够。事务最适于被看作是“短期的”实体,执行对系统的稳定状态变化;它们比较不适合于构造“长期的”应用程序函数(比如要运行数个小时,数天 … )。通过长期保持资源(比如锁定),长期的原子事务(通常出现在业务到业务的交互中)可以把系统中的并发性降低到一个可以接受的水平;此外,如果这类原子 事务回滚,许多已经执行的有价值的工作就会被取消。

  Web services 引出了一类不同的问题:它们明确与促进系统的互操作性有关。从事务管理的角度看,这引出了一些有趣的问题。正是一个事实使 Web services 如此有趣,这个事实就是,体系结构故意不说明服务端点背后发生的事情—— Web services 最终只与几方之间的结构化数据的传输有关,以及用于保护这类传输的任何元级别信息(比如通过加密或数字签名消息)——但是正是在服务端点之后,我们发现了 支持业务行为的传统事务处理体系结构。

  因此,我们正面临一个悖论。 Web services 平台提供一种面向服务的、松散耦合的而且可能是异步的方法,用于在多方之间传播信息,可是在幕后,我们拥有传统的事务处理基础架构,其行为不是可互相操作 的。而且,在向第三方公开资源时,有一个事实可能会导致出现问题,这个事实就是这些系统中的事务均被假定为显示 ACID 属性,因为它让各方有机会占用资源,并防止事务取得进展。因此,如果 Web services 体系结构中对事务提供支持,那么无疑需要重新解决这个问题。

  这就是 Web 服务复合应用程序框架 ( OASIS Web Services Composite Application Framework) [2] 大展拳脚的舞台。 2003 年 8 月,当 ArjunaTechnologies , Fujitsu, IONA Technologies, Oracle 和 Sun Microsystems 把他们的 WS-CAF 规范提交给标准组织之后,该框架就正式诞生了。与一些其他的 Web services 厂商的工作不同,这项工作是完全开放的,而且所获得的成果也是免费提供的。在下面的场景中,我们将考察 WS-CAF 是如何尝试解决业务到业务事务的重要问题的。

WS-CAF 概览

 WS-CAF 套件包括三个规范,可以增量地实现它们以解决支持各种从简单到复杂的复合应用程序所需的要求:

  • Web Service Context (WS-Context), 一个用于简单上下文管理的轻量级框架。现在, WS-Context 已经到达 OASIS Committee Draft ,而且已经成为几个互操作性演示程序的主题 [10] 。
  • Web Service Coordination Framework (WS-CF), 定义了协调程序的行为,借助这个协调程序, Web services 可以注册上下文扩大和结果传播,以此为基础可以插入各种事务协议。
  • Web Services Transaction Management (WS-TXM), 包括三个不同的协议,用于实现跨事务管理程序的互操作性,并支持多个事务模型(两阶段提交,长期运行的动作或校正,以及业务流程流)。

  WS-CAF 各个部分结合在一起的总体目标是,提供一个支持各种事务处理模型和体系结构的完整解决方案。 WS-CAF 的实现可以从小开始,然后随着时间的推移,逐步壮大为包含更多功能。 WS-CAF 规范的设计目标是配合 Web services 编制和编排( choreography )技术,比如 WS-BPEL [3] 和 WSCI [4] ,并与其他 Web services 规范兼容。 WS-CAF 的重点是定义联合使用 Web services 时所需的支持服务,包括其他规范。

  WS-CAF 的各个部分构成了一个堆栈,从 WS-Context 开始,加入 WS-CF ,然后加入 WS-TXM ,从而交付了复合应用程序所需的完整特性和功能。 WS-CAF 的实现可以从具有简单上下文管理功能的 WS-Context 开始,稍后加入具有其他上下文管理功能和上下文消息交付保证的 WS-CF ,最后加入可以管理各种恢复协议的 WS-TXM 。

  在下面的内容中,我们将会更加详细地考察这每一种规范,并说明它们是如何支持复合 Web services 应用程序的开发的。

WS-Context

  WS-Context 为 Web services 提供一种机制来共享持久性状态,这种机制是支持会话式交互、单点登录、事务协调和其他依赖于系统级数据项(比如 ID 、令牌等)的功能所必需的。上下文提供一种方式,可以通过共享通用信息(比如单点登录会话中交换的安全令牌),把一组消息关联到一个更大的工作单元中。

  因为分布式计算系统依赖于各种 ID 、令牌、频道和地址(这些都是每个软件基础架构的一部分),而且因为 Web services 独立于任何特定的执行环境,我们需要通过一种持久性的共享上下文结构来组织和管理这类系统级信息。应用程序需要服务来管理共享上下文的生命周期,而且要确 保上下文结构保持最新,并且可以访问。

  WS-Context 定义了一个可以任意进行扩充的上下文数据结构。默认情况下,所有上下文定义都是一个惟一的上下文标识符、上下文类型(比如事务或安全性)和一个超时值(上下文可以保持有效的时间长度)。例如:

 
< env:Envelope  xmlns:env =http://www.w3.org/2002/12/soap-envelope>
 
<env:Header >
   
< wsctx:context  timeout ="0" >
     
< wsctx:context-identifier >

        
< "http: //www.arjuna.com/ws-ctx/123:abc:456:def" 

     </wsctx:context-identifier
>
     
<!--  Other protocols can extend context here  -->
   
</ wsctx:context >
 
</ env:Header >
 
< env:Body >
   
< m:Message  xmlns:m =http://example.org/MessageSchema    

<m:?
   </m:Message
>
 
</ env:Body >
</ env:Envelope >

WS-CF

  协调程序 是一个软件实体,负责确保多方之间达成一致。协调程序位于 CORBA , .NET , J2EE 和其他分布式计算环境中,用于跨多个数据源协调典型的两阶段提交事务协议。然而,协调是一种更加基础的要求:它可以用于安全、复制、缓冲和其他领域中。

  因此,通过使用一个支持多个协调协议的插件机制, WS-CAF 中对协调程序的定义进行了扩展,以便用于 Web services 。 Web services 的设计目的是多协议的,而且因此可以映射为多项底层技术。 WS-CF 规范创建了一个能够驱动各种上下文类型和事务协议(比如 WS-TXM 中定义的那些协议和其他协议)的通用协调程序,而不是把协调程序绑定到两阶段提交协议上,虽然后者是定义当前协调程序的方式。

  无论使用何种协调协议和部署在哪个域中,都存在相同的一般性要求:

  • 为特定的协调协议,为特定的应用程序实例实例化(或激活)一个新的协调程序。
  • 协调程序参与者注册,这样它们将会在应用程序的生命期(的某个部分)中收到协调程序的协议消息。
  • 在组成应用程序的 Web services 之间传播上下文消息。
  • 驱动协调协议直到完成为止的实体。

  这些要点的头两条直接涉及到 WS-CF ,第三条是通过使用 WS-Context 而获得的,而第四条则是第三方实体的责任,通常是控制应用程序整体的客户端应用程序。

 
< env:Envelope  xmlns:env ="http://www.w3.org/2002/12/soap-envelope" >
  
< env:Header >
    
< n:Composite  xmlns:n ="http://www.example.org/CompositeApplication" >
      
< n:Coordinator >
        http://www.webservicestransactions.org/example/CoordinatorURI

      
</ Cooordinator >
    
</ n:Composite >
  
</ env:Header >
  
< env:Body >  ...
</ env:Envelope >  

  在上面的例子中,协调程序 URL 执行一个 Web services 接口,该接口为协调程序与 Web services 执行之间的交互定义了 SOAP 消息模式。协调程序就可以管理任何用户定义的上下文,并生成和传播用在复合操作中的任何上下文,包括恢复协议中的每个已注册的 Web services 。

WS-TXM

  假设传统的 ACID 事务模型不适合 Web services ,我们就会提出这样一个问题,“哪种类型的模型或协议才适合呢?”这个问题的答案就是,可能没有一种特定的协议是足够的,因为部署 Web services 事务的环境可能多种多样。

  因此, WS-TXM 提供设计用于适用多个用例的模型,从紧密耦合的基于企业内部网的事务( tightly-coupled intranet-based transactions ,TX-ACID ) , 到因特网规模的长期事务( Internet-scale long lived transactions , TX-LRA ) , 再到面向业务流程的事务( business-process oriented transactions , TX-BP )。

  值得注意的重要一点是,这组协议并不是完整的。其意图是,如果开发出其他更适合于各种用例的模型,那么就应该把这些模型添加到 WS-TXM 。

TX-ACID

  这个模型的设计目的是通过 Web services 支持现有的事务处理系统,因为这类系统已经组成了企业级应用程序的骨干部分。尽管 ACID 事务 可能不适合于所有的 Web services ,它们肯定会适合其中的一些,特别是像金融中涉及到的那些高价值交互。结果,设计 WS-TXM 中定义的 ACID 事务模型时已经考虑了互操作性。在 ACID 模型中,每种行为都被束缚在事务的范围内,这样行为的结束便会自动触发相关事务的终止(提交或回滚)。

TX-LRA

  长期运行的动作模型( long running action model , LRA ) 是特别为那些持续较久的业务交互而设计的。在这个模型中,行为可以影响业务交互,在应用程序范围内执行的所有工作都必须是可补偿的。因此,对于应用程序的 工作来说,要么成功执行,要么什么都不做。单独的 Web services 如何执行它们的工作并确保在需要补偿时能够撤消工作,这是实现的选择,并未公开给 LRA 模型。 LRA 模型只为补偿动作定义了触发器和执行触发器所需的条件。

  在 LRA 模型中,每个应用程序都被绑定在补偿交互的范围内。例如,当用户预订了一次航班的座位时,航班预订中心可以采取一种最有利的方法——实际预订座位并记在用 户帐户上,这样做的根据是大多数预订座位的客户稍后都会买票;这种行为的补偿动作显然是取消座位的预订,并贷记用户的帐户。在嵌入的 LRA 范围内执行的工作必须保持是可补偿的,直到一个封闭服务通知单独的服务不再需要它为止。

  对这个模型的警告是,应用程序服务可能不是可补偿的(比如,打印和邮寄支票的应用程序级服务),或者补偿能力可能是暂时的。 LRA 模型允许应用程序把可以进行补偿的服务与不能进行补偿的服务结合在一起。显然,通过混合这两种服务类型,用户得到的结果可能是,业务行为最终由 LRA 模型撤消,但是这可能需要外部(特定于应用程序的)补偿。

  LRA 模型定义了一个叫做 Compensator 的协议实施者,它代表服务进行操作,取消它在 LRA 范围内执行的工作。如何开展补偿显然与服务有关;补偿工作可以由其他自身拥有 Compensator 的 LRA 执行。

  让我们考虑另一个长期运行的业务事务的例子。该应用程序的内容是预订出租车,预订餐馆座位,预订剧院座位,然后是预订酒店房间。如果把所有这些 操作当作一个事务来执行,那么在预订出租车(举个例子)期间获得的资源直到顶级事务终止之后才会释放。如果后续的行为不需要这些资源,那么它们不必要对其 他客户端不可用。

  图 1 说明 了如果把联系的各个 部分映射到 LRA 中。所有单独的行为都是可补偿的。例如,这意味着如果 LRA1 失败,或者用户决定不接受预定的出租车,工作将被自动取消。因为 LRA1 被嵌入到其他 LRA 中,一旦 LRA1 成功地完成任何补偿机制,它的工作可能被传递给 LRA5 :这是 Compensator 的一种实现选择。在 LRA5 成功完成的事件中,没有工作需要进行补偿,否则在 LRA5 (LRA1 to LRA4) 范围内执行的所有工作都会得到补偿。

fig1
图 1 , LRA 示例

TX-BP

  在业务流程事务模型( business process transaction model , BP model) 中, 业务流程中涉及到的所有方都位于业务域( business domain )中,它们本身可能会使用业务流程来执行工作。业务流程事务负责管理这些域之间的交互。业务流程(业务到业务的交互)被划分为很多 业务任务 ,而每个任务都在一个特定的业务域内执行。业务域本身可以以一种循环方式再分为其他业务域(业务流程)。

  如果模型的联合更加适于行为,每个域可以代表一个不同的事务模型。每个业务任务(可以被建模为作用域)可以在必须取消封闭作用域的事件中起到特 定于实现的反作用。另外,控制应用程序可以周期性地请求整个业务域具有它们的状态点,这样它们就可以通过应用程序一致地回滚到该检查点,或者在事件失败时 从该检查点重新启动。

  单独的任务可能需要多个服务才能工作。我们假定每个任务是一个可补偿的工作单元。然而,与前面描述的 LRA 模型 一样,如何提供补偿是任务的一个实现选择。

  例如,考虑 图2 中显示的购买家庭娱乐系统的例子。在线商店与它们的特定供应商交互,每个供应商都位于它自己的业务域中。获得每个组件必需的工作被建模为一个单独的任务或 Web services 。在这个例子中, HiFi 任务实际上由两个子任务构成。

fig 2
图2,业务流程和任务

  在这个例子中,用户可以与商店进行同步的交互,以构建娱乐系统。另外,用户还可以提交一份订单(可能带有可选要求的列表)给商店,而商店到货时就会与用户取得联系;同样地,商店提供订单给每个供应商,要求它们在每个组件可用(或者已知不可用)时联系自己。

如何使用 WS-CAF ?

  在业务行为期间,一个给定流程通常会与许多不同的合作伙伴进行交互,以便完成工作。这些交互可以基于同步或异步的传输机制。然而,典型的交互模 式是基于异步的(单向)消息,因为这样做的好处是支持应用程序实体的松散耦合:需要响应的给定消息的发送者不需要和该响应的最终接收者相同。这允许在选择 服务部署的过程中拥有更大的灵活性,特别是在易于出错或者需要动态变换角色和责任的环境中。

  然而,如果交互的结构为独立的单向消息,显然需要一些把响应绑定到请求的手段。此外,在某些情形中,对于把多个请求发送给一个服务,但只需要一 个响应来说,它可能是必需的。例如,考虑一个在线计算机订购服务,该服务允许您发送一份初始订单,但是可以跟进增强的请求,直到机器最终运到为止。这样就 存在多个发出的请求(最初的 + N 个改进的)和一个进入的响应(交货)。

  这些要求都可以被归结为要求消息 上下文化 :另外的信息与消息相关联,以支持基础架构“路由”消息(在物理上或逻辑上)。完成这种匹配有一种明显的方式,即通过使用与消息相关的另外的信息(比如消息次序号)。然而,这样做具有以下缺点:

  1. 它要求来自涉及到的各方的支持(和同意)。例如,我们是否对这种信息使用了字符串、 URI 或整数?
  2. 它是一个特殊的解决方案,每次应用程序具有此类要求时就要实现它。尽管对于一次或两次交互,它是有效的,但是随着交互数目和服务的增长,它不能随之扩展。

  WS-Context 定义了一种绑定了上下文的抽象行为的概念:行为的生命期就是上下文的生命期。所以,我们可以(例如)使用一种行为来对会话建模:在行为作用域内,面向会话的服务上的所有交互通过上下文被惟一且清楚地绑定到该行为上。行为还可以对业务流程实例、会话和其他概念建模。

  例如,上下文的开始部分可能如下:

<ContextType>MyContext</ContextType>
<context-identifier>
www.webservicestransactions.org/example/xml2004

</context-identifier>

  行为可能需要用户身份验证。例如,正如我们提过的那样, Bob 和 Pen 之间的交互需要某种身份验证信息。为了方便整个复合应用程序中的单点登录,可能要将上下文扩展为包括用户信息,并将其提供给为 WS-BPEL 定 义的流中首个 Web services 的输入。流中的首个 Web services 将会检查用户名和密码(星号用于表示下面例子中的不透明数据),并生成一个身份验证令牌。这种身份验证令牌将被放回到上下文数据结构中,扩充原始的结构。 这个令牌(而不是用户名和密码)用于随后检查用户是否有权访问流中的其他 Web services 。

  扩充之后的上下文可能包含以下内容:

<extended-context>
<user-name>John Doe</user-name>
<password>********</password>
<AuthToken>********</AuthToken>
</extended-context>

  正如前面举例说明的那样,上下文就是一个活动的数据结构;安全登录的结果(或者相当于上下文内容的其他操作)通常会被添加,然后传播给流中的下一个 Web services 。例如,联系多个安全域的单点登录系统可以添加另一个令牌给上下文。

  像业务流程执行语言( Business Process Execution Language , BPEL )和 Web 服务编排接口( WebServices Choreography Interface , WSCI )这样的规范,其重点是把多个 Web services 联系在一起,以创建多步骤的应用程序,比如填写购买订单或者解决保险索赔。因此,这些应用程序具有跨多个步骤共享上下文和协调这些步骤的需求。

  尽管像 BPEL 和 WSCI 这样的机制提供了一种机制,用于把 WSDL 层扩展为识别多个 Web services 的一系列执行。 WS-CAF 定义了补偿系统层,这个层是确保多个 Web services 获得应用程序的预期结果,以及来自本地或远程源的多个 Web services 进行协作以生成可预测行为(不论系统是否出现故障),并使系统处于可知状态所必需的。

结束语

  关于 Web services 规范的一处重要考虑是知识产权和版权所有权。例如, WS-Interoperability 组织 [7] 已经讨论了它们的主要规范可以或应该引用私有规范的程度。 WS-I Basic Profile 引用了 SOAP 1.1 , WSDL 1.1 和 UDDI V2 ,所有这些规范都是由私有组织制订的 ,但是已经提交给了标准组织。

  私有版权所有的一些规范要求支付版权费给版权所有者,才有权实现和销售基于这些规范开发的软件。未持有某种特定规范版权的 Web services 厂商可能会卷入实现其竞争对手控制的规范的麻烦之中,尤其是当它们没有得到许可参与这种规范的定义和发展时。当某种规范没有受到一家或一群厂商控制时,它 就被称为是“开放的”,这意味着任何人都可以参与它的定义和发展。

  其他 Web services 规范也分为私有和开放的,而 WS-Context 规范是惟一的。不存在为 Web services 定义通用上下文管理机制的其他规范。

  OASIS WS-Coordination Framework 规范与私有的 WS-Coordination 具有共同的起源——它们均基于 Object Management Group(OMG) 的扩展事务规范,叫做 Additional Structuring Mechanisms for the OTS [8] 。这个规范被开发为 Object Transaction Specification (OTS) 的一个扩展 [9] ,定义了如何协调 CORBA 和 J2EE 世界的工作。

参考资料

  1. [1]Java Transaction Processing: Design and Implementation, Mark Little, Jon Maron 和 Greg Pavlik, Prentice Hall, 2004 年 7 月
  2. [2]OASIS Web Services Composite Application Framework Technical Committee, http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=ws-caf
  3. [3]OASIS Web Services Business Process Execution Language Technical Committee, http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsbpel
  4. [4]The Web Services Choreography Interface, 2002 年 8 月 , W3C Note, http://www.w3.org/TR/2002/NOTE-wsci-20020808/
  5. [5]W3C Architecture Committee, see http://www.w3.org/2002/ws/arch/
  6. [6] http://www-306.ibm.com/software/solutions/webservices/pdf/SecureReliableTransactedWSAction.pdf
  7. [7] 参见 http://www.ws-i.org/Documents.aspx ,了解 WS-I 的背景和关于 WS-I 工作组许可证的信息,包括最近组成的需求工作组。
  8. [8] http://www.omg.org/technology/documents/formal/add_struct.htm
  9. [9] http://www.omg.org/technology/documents/formal/transaction_service.htm
  10. [10] OASIS WS-Context Interoperability Demonstrator, http://www.oasis-open.org/news/oasis_news_11_19_04.php

原文出处

http://www.webservices.org/ws/content/view/full/52969 
Java Context-Awareness Framework-开源 上下文感知是普适计算中的关键概念。 Java上下文感知框架(JCAF)是基于Java的上下文感知基础结构和用于创建上下文感知应用程序的编程API。 立即下载

相关推荐

手把手教你用三菱PLC控制JET伺服原点:从硬件接线到GXWORKS3程序调试

本文详细介绍了如何使用三菱PLC控制JET伺服系统实现原点回归功能,涵盖硬件接线、参数配置到GX Works3程序调试的全流程。通过实战指南,帮助工程师快速掌握伺服控制技术,提升工业自动化项目的实施效率。

weixin_30642561的博客 535

jaxws webservice 中添加session 进行验证

(一)创建Server类 public class HelloServer { private String sessionid; public WebServiceContext wsContext; public String onLogin(){ return null; }

aj251的专栏 953

Win11上WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文详细介绍了在Win11系统上安装和配置WSL2及Ubuntu22.04开发环境的完整流程与避坑指南。内容涵盖从解决网络安装错误、更换国内镜像源以加速软件更新,到一站式配置C++开发工具链(包括GCC、GDB、CMake等),并提供了提升WSL2使用体验的实用技巧和故障排除方法,帮助开发者高效搭建稳定的Linux开发环境。

weixin_29306261的博客 474

WebService服务通过request请求获取信息

Java编程在WebService服务中获取请求携带的相关信息

shark_pupper的博客 1409

从零到一:Mx_yolo本地训练与K210部署实战指南

本文详细介绍了从零开始进行Mx_yolo本地模型训练到K210部署的全流程实战指南。涵盖环境配置、数据准备、模型训练与调优、模型转换及K210部署等关键步骤,并提供了常见问题解决方案和性能优化技巧,帮助开发者高效完成AI模型在嵌入式设备的落地应用。

weixin_29081163的博客 252

格拉姆角场(GAF)实战:用Python实现时间序列图像化处理

本文深入解析了格拉姆角场(GAF)技术,这是一种将一维时间序列转化为二维图像特征的方法,以便利用卷积神经网络(CNN)等图像模型进行深度分析。文章通过Python实战代码,详细演示了GASF和GADF两种核心转换的实现过程,并探讨了其在时序数据分类任务中的应用,为故障预警、金融模式识别等场景提供了强大的图像驱动分析视角。

weixin_29079671的博客 273

金蝶EAS8.2二次开发,做webservice接口

1.WebService接口调用及调试 2.BoswebService原理 由SAOP,WADL,以及uudi等几块技术组成,以xml格式进行数据的传输 在bos中只能发布Entity和Façade两种元数据类型.在建立webService功能时最好使用Façade 并且提供简单类型的输入和返回值. 3.webService建立 建立需要发布的façade,建立简单的业务逻辑 在设计模式点击右键...

qq_31450641的博客 7586

实验吧 损坏的U盘镜像

        从网站上可以下载一个CTF.hdd的文件,使用winHex打开,可以知道这是一个exFAT格式的文件。        用binwalk检查一下,发现文件中包含两个zip文件,使用foremost进行提取。一个压缩包需要密码解压缩,另一个解压后发现Password.txt文件。说明另一个压缩包的密码与checksum有关。        通过查看exFAT文件系统格式可以得知如何计算...

xingyyn78的博客 3512

金蝶创建webservice接口和调用

注意:因为文件缺失webservice这部分是以3个功能来描述的 webservice金蝶有标准接口可以在金蝶社区找到文档,自己写一个webservice接口需要在金蝶bos设计开发工具matedata目录下新建一个功能。 注意:功能命名结尾要以Facade结尾 功能建完后再到 方法里面完成方法的命名、返回值、参数命名、参数类型的设置。 完成后再右键方法名先发布功能再发布webservice(发布webservice时要勾选参数) 接着在java模块刷新解决方案,会自动生成对应的co.

wx1225q的博客 1万+

告别CMake依赖!在Visual Studio 2022中直接配置VTK 9.4开发环境(附完整项目示例)

本文详细介绍了如何在Visual Studio 2022中直接配置VTK 9.4开发环境,无需依赖CMake。通过图文教程和完整项目示例,帮助C++开发者快速集成VTK库,简化开发流程,提升工作效率。特别适合科学可视化任务的开发者。

weixin_26804345的博客 415

get_ccopt系列命令介绍

get_ccopt_property:用来获取cts阶段,clock tree上所有的参数信息,可以通过get_ccopt_property –help *获取所有参数。get_ccopt_skew_group_delay:用来获取skew group的相关信息,可以通过筛选出特定条件下skew_group的参数,如skew_group下latency最长是多少;get_ccopt_clock_tree_source_groups:获取clock tree的source group名字;

芯冰乐 281

WebSocket服务端和客户端使用

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;using System.Net.WebSockets;using System.Text;using System.Threading;using System.Threading.Tasks;using...

weixin_30498921的博客 370

【教程4>第8章>第10节】OFDM完整通信链路项目的FPGA开发4——插入导频

本文介绍了基于MATLAB和Verilog的导频插入设计与实现方法。首先回顾了MATLAB中导频插入的算法实现,展示了每32个数据插入一个导频的设计。接着详细说明了Verilog硬件实现方案,包括导频序列定义、计数器设计、FIFO模块等关键部分。通过仿真测试验证了设计的正确性,输出了插入导频后的序列、导频序列以及调整时序后的序列。最后提供了相关视频教程资源,帮助读者理解设计过程。该设计实现了数据与导频的精确插入,为OFDM等通信系统开发提供了实用参考。

FPGA/MATLAB学习教程/源码/项目合作开发 395

记录......

记录

qq_37384052的博客 321

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

CXF获取客户端IP(解决WebServiceContext为null问题)

CXF获取客户端IP(解决WebServiceContext为null问题) 原文地址: https://blog.youkuaiyun.com/wwwyuanliang10000/article/details/21290027 网络上很多文章都是这样配的: @Resource private WebServiceContext wscontext; public String ge...

xujingcheng123的博客 867

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

解决CXF获取客户端IP(WebServiceContext为null问题)

网络上很多文章都是这样配的:      @Resource private WebServiceContext wscontext;   public String getIP(){         MessageContext ctx = wscontext.getMessageContext();         HttpServletRequest request = (Htt

pan-zy的专栏 2418

不同框架实现的WebService的服务端获取HttpServletRequest

一. 基于xfire实现的WebService HttpServletRequest request = XFireServletController.getRequest(); 二. 基于axis实现的WebService MessageContext mc = MessageContext.getCurrentMessageContext(); HttpServletRequest

你是我的天晴 801

关于CXF获取IP的方法

问题描述 参照网上一般是@ResourceprivateWebServiceContextwsContext;MessageContextctx=context.getMessageContext();HttpServletRequestrequest=(HttpServletRequest)ctx.get(AbstractHTTPDestination.HTTP_REQUEST);即可在soa

很多时候犯错都是在不知情的情况下发生的 901

bos webservice接口后登陆用户会覆盖前用户的context的解决方法

1.客户端登陆后获取sessionId EASLoginProxyServiceLocator loginLocator = new EASLoginProxyServiceLocator(); try { EASLoginProxy loginProxy = loginLocator.getEASLogin(); System.out.println("------ 开始登录服务器 ..

fenyu8的专栏 1502

hibernate.current_session_context_class

遇到过的问题: 情景1: 在使用SessionFactory的getCurrentSession方法时遇到如下错误,经过检查,原因如下: 是因为在hibernate.cfg.xml文件中忘记进行了如下设置: hibernate.current_session_context_class如果是在web容器中运行hibernate,则在hibernate.cfg.xml中加入这句话: &lt...

不积跬步 无以至千里 不积小流 无以成江海 1093

WSS和MOSS的区别

 Microsoft Office SharePoint Service 2007 是微软最新的企业协作应用和开发平台。简称MOSS,MOSS基于Window SharePonit Service 3.0开发,简称WSS。MOSS是收费的,WSS是免费的,只要拥有了Window Server2003的许可,就可以免费安装WSS。 WSS拥有站点,列表,文档库,文档管理,web part

figerDeng的专栏 2300

WebService深入浅出

WebService深入浅出什么是WebserviceW3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。简单的说:WebService即Web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术。Web服务:基于HTTP和XML的技术,HTTP是互联网上

Smile_Pride的博客 4万+

使用WebAPI、.NET Core CLI、NuGet CLI操作Nuget源

最近项目上元数据开发,准备使用nuget包进行封装,所以对nuget源进行了一些研究主要包含以下三种。 WebAPI 官方文档说明上介绍nuget源提供的WebAPI是遵循Odata规范的,但是通过验证发现存在很多问题,大多数api接口只适应于nuget官方仓库,以下是经过测试可用的接口。如果有兴趣可以发掘更多,详情参考:https://docs.microsoft.com/zh-cn/nuget...

公子公子的博客 1694

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

weixin_44218929的博客 195

pandas 深度入门:从数据结构到一份真实销售报表

本文系统讲解Pandas核心应用,从三分钟安装到完整月度报表生成,涵盖数据读取、清洗、筛选、分组聚合、表连接、透视表与时间序列等13个关键环节。强调“先看数据再动手”,掌握Series/DataFrame/Index结构本质,熟练运用loc/iloc、merge校验、agg/transform区别,通过真实案例实现高效报表自动化,告别手动Excel操作。最后提供性能优化与高频报错解决方案,助力读者快速上手,真正实现“写二十行代码,跑三秒出结果”。

信息安全领域优质创作者|操作系统领域专家 291

数据结构的基本概念和算法的初步认识

本文系统阐述数据结构与算法的基础概念,涵盖数据、数据元素、数据对象的层次关系,数据结构的三要素(逻辑结构、存储结构、数据运算),以及抽象数据类型。重点解析算法的特性与设计要求,并深入讲解时间复杂度分析的核心——大O表示法,通过“只保留最高阶项、忽略常数系数、取最坏情况”三大原则,结合实例剖析O(1)、O(n)等常见时间复杂度,揭示算法效率的本质评估方法。

ACH_YYX的博客 190
上一篇: JavaMail API详解
下一篇: 事务服务浅析(一)
FreeCreator
博客等级 码龄22年 0粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值