以下のサイトの情報を元にglassfish のJDBCレルムを使ったユーザー認証方法の実装を試行錯誤しています。
http://www.slideshare.net/OracleMiddleJP/java-ee-detail-of-jdbcrealm?ref=http://yoshio3.com/2013/12/10/glassfish-jdbc-realm-detail/
上記資料の内容は、JavaEE・JSFで実装したWEBアプリケーションのJDBCレルム認証を使った方法で、
実際に手順通り行って、想定通りの結果(ユーザーの入力・削除、ログイン制御)を得られました。
これをJAX-RS Jersey で実装されたRestfulAPIで認証結果を得たいと考えています。
サービスの作成には以下の手順で行いました。
https://netbeans.org/kb/docs/websvc/rest_ja.html
ここで、自動生成されたサービスのファサードに以下の処理を記述し、
request.login の結果問題なければ、認証OK。Exception に落ちれば認証失敗としたいと考えています。
JSF版のログイン処理を参考にしてJAX-RSのファサードに判定処理を書いているのですが、
HttpServletRequestの周辺で、NullException が走ります。
import も通っていますし、IDEでのソース上では、一切エラー等出ていないのに関わらずです。
一応、認証チェック用のファサード処理を下記に記載します。
java
1 / / Login Test 2 @GET 3 @Path("login/{username}/{password}") 4 @Produces({"application/xml", "application/json"}) 5 public String login(@PathParam("username") String username, @PathParam("password") String password) { 6 FacesContext context = FacesContext.getCurrentInstance(); 7 ExternalContext externalContext = context.getExternalContext(); 8 HttpServletRequest request = (HttpServletRequest) 9 externalContext.getRequest(); 10 11 try{ 12 request.login(username, password); 13 } catch(ServletException ex) { 14 Logger.getLogger(UsertableFacadeREST.class.getName()).log(Level.INFO, null, ex); 15 Logger.getLogger(UsertableFacadeREST.class.getName()).log(Level.INFO, "LoginFalse :: {0} :: {1}", new Object[]{username, password}); 16 } 17 18 return username + " :: " + password; 19 } 20
動かないという事は、間違っているという認識なのですが
同じ言語、同じ環境(JavaEE・glassfish)で動かないのかがわかりません。
動かす方法やヒントも知りたいです。
そもそも、javaへの理解が足りていない事は重々承知の上で、
お知恵を貸して頂けますと幸いです。
※エラー情報の追加 2015/8/7
HTTPエラー画面
exception
javax.servlet.ServletException: javax.ejb.EJBException
root cause
javax.ejb.EJBException
root cause
java.lang.NullPointerException
glassfishログ
警告: EJB5184:A system exception occurred during an invocation on EJB UsertableFacadeREST, method: public java.lang.String entities.service.UsertableFacadeREST.login(java.lang.String,java.lang.String)
警告: javax.ejb.EJBException
省略
Caused by: java.lang.NullPointerException
at entities.service.UsertableFacadeREST.login(UsertableFacadeREST.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
省略
警告: StandardWrapperValve[entities.service.ApplicationConfig]: Servlet.service() for servlet entities.service.ApplicationConfig threw exception
java.lang.NullPointerException
at entities.service.UsertableFacadeREST.login(UsertableFacadeREST.java:93)
省略
回答2件
あなたの回答
tips
プレビュー