Providing context-aware Web services is an adaptive process of delivering contextually matched Web services to meet service requesters' needs. We define the term "context" from two perspectives: one from service requesters; and the other from Web services. From the former perspective, context is defined as the surrounding environment affecting requesters' services discovery and access, such as requesters' preferences, locations, activities, and accessible network and devices. From the latter perspective, context is defined as the surrounding environment affecting Web services delivery and execution, such as networks and protocols for service binding, devices and platforms for service execution, and so on. This paper presents a Java Expert System Shell (JESS)-enabled context elicitation system featuring an ontology-based context model that formally describes and acquires contextual information pertaining to service requesters and Web services. Based on the context elicitation system, we present a context-aware services-oriented architecture for providing context-aware Web service request, publication, and discovery. Implementation details of the context elicitation system and the evaluation results of context-aware service provision are also reported.