In domains of limited resources, problem solving and execution of solutions may require the satisfaction of resource use constraints among a group of collaborating agents. One way for the agents to agree to the distribution of limited resources is through negotiation. In this paper we present how an agent that decides it must negotiate for the use of resources that it needs to reason or execute a task can use case-based reasoning (CBR) and utility to learn, select, and apply negotiation strategies. The negotiation process is situated in the current world description, self state, and also dynamically changing evaluation criteria and constraints. Consequently, the negotiation strategies that an agent uses vary greatly. To determine the negotiation strategy an agent uses CBR to compare the new situation to old cases (from its situated case base) and learns from its previous experiences how it should negotiate. This unique synergy allows us to address real-time resource allocation and efficient knowledge management: (1) the use of negotiation reduces communication traffic since knowledge updates and exchanges are performed only when necessary, and (2) the use of CBR and utility streamlines the decision process so that an agent can obtain a "good-enough, soon-enough" negotiation strategy effectively.