Bu bölümde aşağıdaki konular açıklanmıştır:
Güvenlik
Bir veri kaynağı, aşağıda belirtilen iki erişim modundan birinde çalışabilir:
-
Varsayılan olan kısıtlanmış erişim modunda bir veri kaynağı, yalnızca veri kaynağının bulunduğu alan adından gelen istekleri yerine getirir. Kısıtlı mod, siteler arası istek sahtekarlığı (XSRF) saldırılarını önler ve sınırsız erişim modundan daha güvenlidir. Veri kaynağı kitaplığı, sunucu tarafındaki durumu veya verileri değiştirmek için değil, yalnızca veri döndürmek için bir arayüz sağladığından, yalnızca veri çalmaya çalışan XSRF saldırıları yapılabilir. Veri kaynağınızı veri çalma girişimlerine karşı güvenli hale getirmek için çerez tabanlı kimlik doğrulamayla birlikte kısıtlanmış modun kullanılması gerekir. Kullanıcıların kimliklerini doğrulama yönteminiz, ortamınıza ve uygulamanıza bağlıdır.
-
Sınırsız erişim modunda bir veri kaynağı, kaynağından bağımsız olarak tüm istekleri sunar. Kısıtlanmamış modda çalışan bir veri kaynağı, çerez tabanlı kimlik doğrulama ile korunabilir, ancak veri kaynağının XSRF saldırılarına karşı savunmasız olacağını unutmayın. Veri kaynağının alanının dışındaki web sayfalarındaki görselleştirmelerin veri kaynağına erişmesi gerekiyorsa veya veriler herkese açık alandaysa ve dolayısıyla korunması gerekmiyorsa sınırsız modu kullanın.
Görselleştirme isteği JSON, CSV veya HTML yanıt biçimini belirtebilir. Yanıt biçimi, veri kaynağının veri tablosunu döndürdüğü biçimi belirler. CSV ve HTML biçimleri XSRF saldırılarına karşı savunmasız olmadığından bu biçimlere kısıtlı modda bile diğer alan adlarından erişilebilir.
Kısıtlanmamış modu belirtmek için isRestrictedAccessMode()
öğesini aşağıdaki gibi geçersiz kılın:
@Override protected boolean isRestrictedAccessMode() { return false; }
Kolaylık sağlaması açısından, kitaplıkla birlikte sağlanan tüm örnekler sınırsız erişim modunda çalışır.
Hatalar ve Uyarılar
Geçerli bir veri tablosu döndürülmesi mümkün olmadığında veya istendiğinde kitaplık bir
DataSourceException
gönderir. Örneğin, kullanıcının kimliğinin doğrulanamaması. Hatalar nedeniyle veri tablosu oluşturamadığında kitaplık bu istisnaları uygular. Veri kaynağınıza özgü durumlarda
istisnalar kullanmak isteyebilirsiniz. Öyleyse DataSourceException
sınıfından devralarak kendi hata istisna türlerinizi oluşturun. DataSourceException
sınıfını doğrudan da
verebilirsiniz.
DataSourceException
sınıfı base
paketinde bulunur ve şu parametreleri alır:
ReasonType
Bu parametre zorunludur. Kullanılabilir neden türleri,ReasonType
sıralamasında tanımlanır. Mevcut neden türlerinden hiçbiri uygun değilseOther
veyaInternal
özelliğini kullanabilirsiniz.
MessageToUser
Bu parametre, hata mesajının metnini tanımlar. Çoğu durumda, kullanıcıya ipucu olarak gösterilir. Bu nedenle, teknik veya gizli bilgilerin yer almaması önemlidir.
Hataları işlemek için datasource.DataSourceHelper
içindeki yardımcı işlev grubunu kullanabilirsiniz. Bu örnekte, DataSourceException
değeri almak ve veri servlet yanıtında bir hata ayarlamak için aynı setErrorServletResponse
adına sahip iki işlevi çağırın. Bu işlevlerden biri veri kaynağı isteği, diğeri ise HttpServlet request
alır ve DataSourceRequest
oluşturmanın başarısız olduğu durumlarda kullanılır. Özellikleri ve Etkinlik Akışını Tanımlama bölümünde örnek bir uygulama sunulmuştur.
Bir veri tablosu döndürülmüyorsa kitaplık bir hata döndürür. Bir veri tablosu döndürülebiliyorsa ancak raporlanacak bir sorun varsa kitaplık, veri tablosuyla birlikte bir uyarı döndürür. Örneğin, kitaplık aşağıdaki durumlarda bir uyarı oluşturur:
- sorgu görselleştirmesi kısaltılmış verilerle sonuçlanan bir
LIMIT
sağlar. - Sorgu görselleştirme,
FORMAT
ifadesinde geçersiz bir biçimlendirme kalıbı isterse.
Kendi uyarınızı eklemek için base.Warning
örneği oluşturun ve addWarning()
yöntemini kullanarak bunu veri tablonuza ekleyin.
Günlük kaydı
Kütüphane, Cakarta ortak günlük kaydını kullanır. Jakarta ortak günlük kaydı, halihazırda sahip olduğunuz en yaygın günlük kaydı sistemleriyle birlikte kullanılabilir. Günlük kaydı sisteminiz standart değilse bir bağdaştırıcı yazmanız gerekebilir. Daha ayrıntılı bilgi için Jakarta Commons Logging ana sayfasına göz atın.
Bir istisna atıldığında, günlüğe bilgi gönderilir. Günlüğe erişme şekliniz, kullandığınız günlük kaydı sistemine bağlıdır.