[Seasar-user:21576] Re: [DOMA]エンティティプロパティへのアクセスに失敗します

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2013年 3月 26日 (火) 17:38:04 JST


中村(taedium)です。

java.lang.reflect.FieldクラスのsetAccessibleメソッドの
呼び出しがセキュリティポリシーで禁じられているために
例外が発生しているようです。

対応方法の1つはセキュリティポリシーを調整することです。
WebOTXをお使いのようですので
こちらのマニュアルが参考になるのではと思います。
http://www.nec.co.jp/WebOTX/download/manual/84/html/design/2_webap.html#2.4.

そもそもpublicなField(ここではSAE1402S04SA003Entityのstフィールド)
に対してはsetAccessibleメソッドを呼び出す必要がないので、
Domaの方を修正してみました。
セキュリティポリシーの調整が難しい場合はこちらをお試しください。
http://maven.seasar.org/maven2-snapshot/org/seasar/doma/doma/1.30.0-SNAPSHOT/doma-1.30.0-20130326.083256-1.jar


On Tue, 26 Mar 2013 16:28:55 +0900
maro <maro @ pascalia.co.jp> wrote:

> 長岡といいます。
> DOMA初心者です。
> 以下のようなEntityクラスを作りました。
> 
> package sae1402.entity;
> 
> import org.seasar.doma.Entity;
> import org.seasar.doma.Column;
> 
> @Entity
> public class SAE1402S04SA003Entity {
> 
>      @Column(name = "MultiBlockName")
>      public String st;
> 
> }
> 
> 実行すると、以下のようなエラーが発生します。
> 対応方法をご教示頂けませんでしょうか。
> 
> 2013/03/26 15:21:59.750 3552 75 xxx-PC 0 SAE sae1402.SAE1402S04Service 
> sae1402S04SA001 141 システムエラーが発生しました。
> java.lang.ExceptionInInitializerError
> 	at sae1402.Dao.SAE1402S04DaoImpl.SelectTest(SAE1402S04DaoImpl.java:97)
> 	at 
> sae1402.SAE1402S04Service.sae1402S04SA001(SAE1402S04Service.java:101)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at 
> com.nec.webotx.enterprise.webservice.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:112)
> 	at 
> com.nec.webotx.webservice.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:147)
> 	at 
> com.nec.webotx.webservice.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:267)
> 	at 
> com.nec.webotx.webservice.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:93)
> 	at 
> com.nec.webotx.webservice.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:607)
> 	at 
> com.nec.webotx.webservice.xml.ws.api.pipe.Fiber._doRun(Fiber.java:566)
> 	at 
> com.nec.webotx.webservice.xml.ws.api.pipe.Fiber.doRun(Fiber.java:551)
> 	at 
> com.nec.webotx.webservice.xml.ws.api.pipe.Fiber.runSync(Fiber.java:446)
> 	at 
> com.nec.webotx.webservice.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:265)
> 	at 
> com.nec.webotx.webservice.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:495)
> 	at 
> com.nec.webotx.webservice.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:256)
> 	at 
> com.nec.webotx.webservice.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:140)
> 	at 
> com.nec.webotx.enterprise.webservice.JAXWSServlet.doPost(JAXWSServlet.java:178)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> 	at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at 
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:304)
> 	at 
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:302)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
> 	at 
> org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:341)
> 	at 
> org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:183)
> 	at 
> org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:631)
> 	at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:326)
> 	at 
> org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:337)
> 	at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:269)
> 	at 
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:694)
> 	at 
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:639)
> 	at 
> com.nec.webotx.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
> 	at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:220)
> 	at 
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:694)
> 	at 
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:639)
> 	at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:633)
> 	at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1117)
> 	at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:130)
> 	at 
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:694)
> 	at 
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:639)
> 	at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:633)
> 	at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1117)
> 	at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:437)
> 	at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:982)
> 	at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:810)
> 	at 
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:584)
> 	at java.lang.Thread.run(Thread.java:662)
> Caused by: org.seasar.doma.jdbc.entity.EntityPropertyAccessException: 
> [DOMA2208] 
> エンティティクラス[sae1402.entity.SAE1402S04SA003Entity]のエンティティプロパティ[st]へのアクセスに失敗しました。原因は次のものです。java.security.AccessControlException: 
> access denied (java.lang.reflect.ReflectPermission 
> suppressAccessChecks)
> 	at 
> org.seasar.doma.jdbc.entity.BasicPropertyType.getField(BasicPropertyType.java:161)
> 	at 
> org.seasar.doma.jdbc.entity.BasicPropertyType.createAccessorFactory(BasicPropertyType.java:141)
> 	at 
> org.seasar.doma.jdbc.entity.BasicPropertyType.<init>(BasicPropertyType.java:126)
> 	at 
> sae1402.entity._SAE1402S04SA003Entity.<init>(_SAE1402S04SA003Entity.java:14)
> 	at 
> sae1402.entity._SAE1402S04SA003Entity.<clinit>(_SAE1402S04SA003Entity.java:11)
> 	... 53 more
> Caused by: java.security.AccessControlException: access denied 
> (java.lang.reflect.ReflectPermission suppressAccessChecks)
> 	at 
> java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
> 	at 
> java.security.AccessController.checkPermission(AccessController.java:546)
> 	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
> 	at 
> java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:107)
> 	at 
> org.seasar.doma.internal.util.FieldUtil.setAccessible(FieldUtil.java:56)
> 	at 
> org.seasar.doma.jdbc.entity.BasicPropertyType.getField(BasicPropertyType.java:159)
> 	... 57 more
> 
> よろしくお願いします。
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user

-- 
Toshihiro Nakamura <nakamura.toshihiro @ isid.co.jp>



Seasar-user メーリングリストの案内