Объективная версия C этого решения с перецентрированной логикой верхнего изображения:
-(UIImage *)getImageInclosedWithinAnotherImage
{
float innerImageSize = 20;
UIImage *finalImage;
UIImage *outerImage = [UIImage imageNamed:@"OuterImage.png"];
UIImage *innerImage = [UIImage imageNamed:@"InnerImage.png"];
CGSize outerImageSize = CGSizeMake(40, 40); // Provide custom size or size of your actual image
UIGraphicsBeginImageContext(outerImageSize);
//calculate areaSize for re-centered inner image
CGRect areSize = CGRectMake(((outerImageSize.width/2) - (innerImageSize/2)), ((outerImageSize.width/2) - (innerImageSize/2)), innerImageSize, innerImageSize);
[outerImage drawInRect:CGRectMake(0, 0, outerImageSize.width, outerImageSize.height)];
[innerImage drawInRect:areSize blendMode:kCGBlendModeNormal alpha:1.0];
finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}
Управление сеансом - это компетенция контейнера, в котором развернут Джерси. В большинстве производственных случаев он будет развернут в контейнере, который выполняет управление сеансом.
Приведенный ниже код представляет собой простой пример ресурса jersey, который получает объект сеанса и сохраняет значения в сеансе и извлекает их при последующих вызовах.
@Path("/helloworld")
public class HelloWorld {
@GET
@Produces("text/plain")
public String hello(@Context HttpServletRequest req) {
HttpSession session= req.getSession(true);
Object foo = session.getAttribute("foo");
if (foo!=null) {
System.out.println(foo.toString());
} else {
foo = "bar";
session.setAttribute("foo", "bar");
}
return foo.toString();
}
}
Ответ Джека о сеансах верен. Они специфичны для контейнера, в котором вы выполняете, хотя спецификация сервлетов, по крайней мере, дает вам переносимость между контейнерами JavaEE.
Что касается безопасности, у вас, по крайней мере, есть возможность отделить его от вашего конкретного кода JAX-RS, используя JaaS (Служба аутентификации и авторизации Java) и фильтр сервлетов . Фильтр можно использовать для принудительной проверки подлинности HTTP и, при успешной проверке подлинности, настроить тему JaaS с соответствующими участниками. Ресурсы JAX-RS могут проверить наличие соответствующих руководителей по теме. Поскольку вы контролируете весь стек, вы должны иметь возможность полагаться на аутентифицированного пользователя в своих ресурсах (но проверьте это!), И вы можете принудительно выполнить авторизацию на основе текущей операции в коде ресурса.
Для обеспечения безопасности Джерси вам следует обратить внимание на поддержку OAuth в Джерси. OAuth идеально подходит, когда вы предоставляете API для своей системы внешним пользователям. Например, как linkedin api