私はこのコードに従っていますhttp://helpx.adobe.com/experience-manager/using/submitting-mobile-form-data-cq.html。最初に、オーサーインスタンスで実行され、正常に動作している createuser.json.jsp から次のコードを使用してセッションを作成しようとしました-
<%@include file="/libs/foundation/global.jsp"%>
<%@ page import="org.apache.sling.jcr.api.SlingRepository" %>
<%@ page import="com.day.cq.security.UserManager" %>
<%@ page import="com.day.cq.security.UserManagerFactory" %>
<%@ page import="com.day.cq.security.User" %>
<%@ page import="com.day.cq.security.Authorizable" %>
<%@ page import="com.day.cq.security.profile.Profile" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="javax.jcr.Repository" %>
<%@ page import="javax.jcr.Session" %>
<%@ page import="javax.jcr.SimpleCredentials" %>
<%@ page import="org.apache.jackrabbit.commons.JcrUtils" %>
<%@ page import="org.apache.sling.commons.json.io.*" %><%
final SlingRepository repos = sling.getService(SlingRepository.class);
final UserManagerFactory umFactory = sling.getService(UserManagerFactory.class);
Session session = null;
try{
session = repos.loginAdministrative(null); // I'm able to create session
catch (Exception e)
{
System.out.println("Exception Occured: " + e.getMessage());
}
finally
{
session.logout();
session = null;
}%>
ただし、セッションを作成するための上記のコードは、パブリッシュ インスタンスでは機能しません。そこで、以下のようにコードを修正してオーサーインスタンスで実行しようとしましたが、この場合は createuser.json.jsp が呼び出されません。追加した Sysout ステートメントが表示されない -
<%@include file="/libs/foundation/global.jsp"%>
<%@ page import="org.apache.sling.jcr.api.SlingRepository" %>
<%@ page import="com.day.cq.security.UserManager" %>
<%@ page import="com.day.cq.security.UserManagerFactory" %>
<%@ page import="com.day.cq.security.User" %>
<%@ page import="com.day.cq.security.Authorizable" %>
<%@ page import="com.day.cq.security.profile.Profile" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="javax.jcr.Repository" %>
<%@ page import="javax.jcr.Session" %>
<%@ page import="javax.jcr.SimpleCredentials" %>
<%@ page import="org.apache.jackrabbit.commons.JcrUtils" %>
<%@ page import="org.apache.sling.commons.json.io.*" %><%
final SlingRepository repos = sling.getService(SlingRepository.class);
final UserManagerFactory umFactory = sling.getService(UserManagerFactory.class);
try
{ System.out.println("Hello session creating");
Repository repository = JcrUtils.getRepository("http://somehost:4502/crx");
Session session = repository.login(new SimpleCredentials("admin",
"admin".toCharArray()),"crx.default");
System.out.println("session: " + session);
catch (Exception e)
{
System.out.println("Exception Occured: " + e.getMessage());
}
finally
{
session.logout();
session = null;
}%>
次の行を削除すると、createuser.json.jsp が呼び出されます。
Repository repository = JcrUtils.getRepository("http://somehost:4502/crx");
Session session = repository.login(new SimpleCredentials("admin",
"admin".toCharArray()),"crx.default");
私がここでやっていることが間違っていることを教えてください。あなたの助けに感謝。