So I'm running my app now on localhost. And
you'll see, if you look in the APIs Explorer,
and drill down in to the functions in the
conference API, that the set announcement method is not here.
That's because we didn't expose it as an endpoints
function. Instead, we defined it as a servlet on
purpose, to keep it internal to the application. So
the APIs Explorer let's you explore endpoint functions, but it
doesn't let you explore your servlets. Since we're going to
put things into memcache, I've deployed my app to app
spot so I can use the memcache viewer. First, I'll
make sure I have some conferences that are nearly sold out.
Okay, this one's pretty close to being sold out. Only
three seats left. This one's only got one seat left. Okay,
so I've got a couple of conferences that only have
a couple of seats left. To test the new set announcement
function, you can use the browser to go to the
URL mapped to the servlet. However, you do have to be
logged in as a developer on the application or you'll
get an error that you're not in the required role. And
that's because we don't want just any old person coming
along, setting the announcements by going to the URL in the
browser. So to trigger the set announcement function, we go
to the URL that we mapped it to in the servlet,
in this case which is crons/set_announcment. So we
go to the URL. Crons_\set announcement. Nothing seems to
happen. But actually that's expected. Remember that the servlet
doesn't set a response so nothing happens in the
page, and if you've got to the place where it asks you to log in and you
go ahead and log in you're going to remain on
the log in page even when the URL executes.
However, we can use a memcache viewer to check
that the announcement got set. So here in the memcache
viewer we do see that we have one item. We
can use the content lookup section to look to see
if it is our announcement. The key we use
with recent announcements is a Java String, so let's display
it, see if we have an announcement. And yes, we
do. So the announcement about the conferences that have been
nearly sold out has been created and saved in memcache.
So now, we can save values in memcache and we
can use a memcache viewer to get those values back.
We're going to want to show this announcement to other people, not
to the developers of the application. Let's go ahead and
create an endpoint function to get the announcement out of Memcache
so we can show it to other people. So another
thing I want to mention is that in the constants class,
constants.java, we define the key for the
announcements, and this is where we get the
recent announcements key from. So in the conference
API class you can define the get announcement
function. This is going to be an end points function so this is a fairly simple
function. Basically get some memcache service, and then
calls the get method on the memcache service,
passing in the announcement key. We check if the value is null. So long as it's
not null, we create a new announcement object,
and we set the message property to the announcement
that we got out of memcache. And again,
we have to return an announcement, rather than
just a string, because this is an endpoint
function. And end point functions can't return just strings.
Estoy ejecutando mi aplicación
en localhost.
Como verán, si se fijan en API Explorer,
y despliegan las funciones
en conference API,
el método de anuncio por defecto
no figura aquí.
Eso es porque no lo expusimos
como función endpoints.
En vez de eso, lo definimos como
un servlet a propósito,
para que fuese interno a la aplicación.
Así que el API Explorer les permite
explorar funciones endpoint,
pero no les deja explorar servlets.
Ya que vamos a poner cosas
en Memcache,
he desplegado la aplicación en AppSpot
para poder usar el visor de Memcache.
Primero, me cercioro de que
en alguna conferencia
casi no queden entradas.
Bien, en esta casi no quedan;
solo tres butacas.
En esta solo queda una.
Bien, hay un par de conferencias
donde quedan solo unas butacas.
Para probar la nueva función
de anuncio programado,
pueden usar el navegador
para ir a la URL mapeada en el servlet.
No obstante, deben estar registrados
como desarrolladores en la aplicación
o les dirá que su perfil es erróneo.
Y eso pasa porque no queremos
que cualquiera programe los anuncios
yendo a la URL del navegador.
Así que para hacer saltar la función
de anuncios programados,
vamos a la URL que mapeamos en el servlet,
es decir, crons/set_announcement.
Entonces vamos a la URL,
Crons_/set-announcement.
Parece que no ocurre nada,
pero eso es lo que esperábamos.
Recuerden que el servlet no programa
ninguna respuesta,
así que en la página no pasa nada.
Y si fuesen al lugar donde les pide
que se registren y lo hiciesen,
permanecerían en la página de registro
aún cuando se ejecutase la URL.
No obstante, pueden usar el visor de caché
para comprobar que el anuncio está bien.
Se ve que en el visor de caché
hay un ítem.
Podemos usar la sección de análisis
de contenidos
para ver si es nuestro anuncio.
La clave que hemos usado con
los últimos anuncios es un Java String,
así que vamos a mostrarlo para ver
si tenemos un anuncio.
Y sí que lo tenemos.
Conque el anuncio de las conferencias
casi vendidas se ha creado
y guardado en Memcache.
Entonces, podemos guardar valores
en Memcache
y podemos usar el visor
para recuperar esos valores.
Vamos a querer mostrarles el anuncio
a otras personas,
no a los desarrolladores de la aplicación.
Creen una función endpoint para sacar
el anuncio de Memcache
de forma que la gente pueda verlo.
Otra cosa que quiero comentar es que
la clase Constants, constants.java,
se define la clave para los anuncios,
y de aquí es de donde sale la clave
para nuestros últimos anuncios.
Así que en la clase API conference
se puede definir
la función getAnnouncement.
Esta será una función endpoint,
de modo que es bastante sencilla.
Básicamente, toma servicio de Memcache,
y luego llama al GetMethod
en el servicio de Memcache,
pasándole la clave del anuncio.
Observen que el valor es nulo.
Mientras no sea nulo,
creamos un nuevo objeto de anuncio,
y establecemos la propiedad mensaje
en el anuncio extraído de Memcache.
De nuevo, tenemos que devolver el anuncio,
en lugar de un string,
porque esto es una función endpoint
y estas funciones no pueden devolver
solamente strings.
今は私のローカルホストで
アプリを実行しています
APIs Explorerで確認してみます
conference APIに含まれている関数を探してみても
setAnnouncementメソッドが見当たりません
エンドポイント関数として
公開しなかったからです
代わりにそれをサーブレットとして定義し
アプリケーションの内部に保持しました
APIs Explorerは
エンドポイント関数は探しますが
サーブレットは探しません
エントリをMemcacheに追加するつもりで
アプリをappspotにデプロイしたので
Memcache Viewerを使うことができます
ほぼ満席の会議がいくつかあります
この会議はかなり満席に近い状態です
3席しか残っていません こちらは1席だけです
残席が少ない会議が2つ見つかりました
新しいsetAnnouncement関数を
テストするには
サーブレットにマッピングされているURLに
ブラウザでアクセスします
ただし アプリケーションには
開発者としてログインしてください
そうしないと必要なロールがないという
エラーが表示されます
無関係な人がブラウザでこのURLにアクセスして
アナウンスを設定するのを避けたいからです
setAnnouncement関数をトリガーするには
サーブレットにマッピングしたURLに移動します
この場合はcrons/set_announcmentです
crons/set_announcmentにアクセスしてみます
何も起きていないように見えますが
想定どおりです
サーブレットは応答を設定していませんでした
このページでは何も起こりません
もしログインを求められたら
ログインしてください
URLが実行されている場合でも
ログインページにとどまることになります
Memcache Viewerを使ってアナウンスが
設定されていることをチェックできます
Memcache Viewerで
ここにアイテムが1つあるのが確認できます
Content Lookupセクションを使って
それが私たちのアナウンスか確認できます
最新のアナウンスで使用しているキーは
Java Stringです
アナウンスがあるかどうか確認してみましょう
ありました
残席が少ない会議についてのアナウンスが
作成されMemcacheに保存されています
これで私たちは値をMemcacheに保存して
Memcache Viewerを使って
それらの値を取得できます
私たちはこのアナウンスをアプリケーションの
開発者以外の人たちに
表示したいと思います
エンドポイント関数を作成して
Memcacheからアナウンスを取得しましょう
そうすれば他の人たちに
アナウンスを表示できます
Constantsクラスについてもお話しておきます
Constants.javaでアナウンスのキーを
定義しています
私たちはここで
最新のアナウンスのキーを取得します
ConferenceApiクラスで
getAnnouncement関数を定義できるのです
エンドポイント関数にするので
かなりシンプルになります
簡単に言うと
MemcacheServiceを取得したあとに
MemcacheServiceのgetメソッドを呼び出します
引数はアナウンスのキーです
その値がnullかどうかチェックします
nullでない限り
新しいAnnouncementオブジェクトを作成します
messageのプロパティをMemcacheから
取得したアナウンスに設定します
エンドポイント関数なので
文字列だけ返すのではなく
Announcementを返す必要があります
エンドポイント関数は
文字列だけ返すことはできないからです
Então estou rodando
meu aplicativo em localhost.
Vocês verão, se olharem
no Gerenciador de APIs,
e drill-down nas funções da
conferência API, que o método conjunto
de anúncio não está aqui.
Isto porque não expomos isto
como uma função dos pontos finais.
Em vez disso,
definimos como servlet propositalmente,
para mantê-lo dentro do aplicativo.
Então o APIs Explorer permite explorar
as funções dos ponto final,
mas não permite que
vocês explorem seus servlets.
Desde que vamos colocar as coisas em memcache,
destaquei meu aplicativo para aplicativo spot
para que eu possa usar
o visualizador de memcache.
Certifiquem-se de que eu tenha algumas conferências
que estão quase esgotadas.
Ok, esta perto de se esgotar.
Apenas três cadeiras sobrando.
Este só tem um lugar sobrando.
Ok, então tenho um par de conferências
que têm duas vagas sobrando.
Para testar a nova função conjunto do anúncio,
você pode usar o navegador
para ir para o URL
mapeado para o servlet.
No entanto, vocês tem que ser
logged como um desenvolvedor na aplicação
ou vocês terão um erro
que não está na função necessária.
Isso porque nós não queremos
qualquer pessoa idosa chegando,
definindo os anúncios indo para a URL no navegador.
Então vamos provocar
a função conjunto de anúncio,
vamos para URL
que nós mapeamos no servlet,
neste caso que é crons/set_announcment.
Então nós vamos para a URL.
Crons_\set annoucemente.
Parece que nada acontece.
Mas na verdade isso é esperado.
Lembre-se que o servlet
não define uma resposta,
então nada acontece na página,
e se vocês tem o lugar
onde pede para log in
sigam em frente e log in
e você vai permanecer na
na página do log,
mesmo quando a URL é executada.
No entanto, podemos usar
um visualizador memcache para verificar
que o anúncio ficou definido.
Então aqui no memcache visualizador
vemos que temos um item.
Nós usaremos a seção de conteúdo de pesquisa
para vermos se é nosso anúncio
A chave que usamos
com anúncios recentes
é uma seqüência de caracteres de Java,
então vamos exibir isto,
vermos se temos um anúncio.
E sim, nós temos.
Então o anúncio sobre as conferências
que quase se esgotaram
foram criadas e salvas no memcache.
Agora, podemos salvar valores no memcache
e podemos usar um visualizador memcache
para recuperar esses valores.
Nós vamos querer mostrar este anúncio
para outras pessoas,
para os desenvolvedores do aplicativo.
Vamos em frente
e vamos criar uma função de pontos finais
para obter o anúncio do memcache
então podemos mostrar para outras pessoas.
Outra coisa que quero mencionar
é que na classe de constantes,
constants.Java,
podemos definir a chave para o anúncio
e é onde encontramos
a chave de anúncios recentes.
Então, na conferência de
Classe API,
você pode definir a função do anúncio.
Isto vai ser uma função dos pontos finais,
então isto é uma função bastante simples.
Basicamente, obter algum serviço memcache e então
chamar o método de obtenção
no serviço memcache,
passando a chave do anúncio.
Verificamos se o valor é nulo.
Desde que não seja nulo,
podemos criar um novo objeto de anúncio,
e definimos a propriedade de mensagem para o anúncio
que tiramos do memcache.
E novamente,
temos que retornar um anúncio,
em vez de apenas
uma seqüência de caracteres,
porque esta é uma função do ponto final.
E funções do ponto final não podem retornar
apenas cadeias de caracteres.