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.