这是我在这里的第一个问题,我希望找到一个人来回答。
现在的情况:
目标:
我的想法是创建一个RESTful资源,在调用时生成上面提到的日历。那能行吗?还是我必须走艰苦的道路,设置一个服务器,可以从webcal://开始提供URI?
发布于 2015-12-16 09:12:48
没有人回答我的问题,但我在其他帖子的帮助下解决了我的问题。
我试图设置一个CalDAV服务器(在本例中是DAViCal)。服务器正常工作,我也可以订阅创建的日历。但另一个问题仍然存在:我的门户中有一些用户在portlet上显示了“实际的”calander。当时只有一个日历,但是(!)用户可以为他感兴趣的事件的子集过滤这个日历。此日历应保存并自动与主日历同步。
创建这个子集很容易,但是我无法将生成的日历与CalDAV服务器同步,因为我还没有找到创建用户的方法!我在各种RFCs中搜索过(WebDAV RFC3744,它是ExtensionsRFC4791,还有CalDav RFC2446)。
因此,我只想查找CalDAV服务器生成的输出。在上述RFCs的帮助下,这是相当容易理解的。因此,我设置了一个REST类,为了测试目的,只需构建一个日历,并将其作为“文本/日历”返回(用ical4j构建)。然后我打开了iCalendar,订阅了我的休息课,一切都很好。这些事件就像我想要的那样被导入了。
这是我的虚拟测试课。它正在创建一个以2015-12-23作为“圣诞节前一天”的日历。
import java.net.SocketException;
import java.net.URISyntaxException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import net.fortuna.ical4j.model.Calendar;
import net.fortuna.ical4j.model.Date;
import net.fortuna.ical4j.model.component.VEvent;
import net.fortuna.ical4j.model.property.CalScale;
import net.fortuna.ical4j.model.property.Name;
import net.fortuna.ical4j.model.property.Organizer;
import net.fortuna.ical4j.model.property.ProdId;
import net.fortuna.ical4j.model.property.Version;
import net.fortuna.ical4j.util.UidGenerator;
@Path("calendar")
public class CalendarRest {
@GET
@Path("test")
@Produces("text/calendar")
public Response getCalendarTest() {
try {
java.util.Calendar javaCalendar = java.util.Calendar.getInstance();
javaCalendar.set(java.util.Calendar.MONTH, java.util.Calendar.DECEMBER);
javaCalendar.set(java.util.Calendar.DAY_OF_MONTH, 23);
Calendar calendar = new Calendar();
calendar.getProperties().add(new ProdId("-//Ben Fortuna//iCal4j 1.0//EN"));
calendar.getProperties().add(Version.VERSION_2_0);
calendar.getProperties().add(CalScale.GREGORIAN);
calendar.getProperties().add(new Name("Eventcalendar"));
// VEVENT
VEvent christmas = new VEvent(new Date(javaCalendar.getTime()), "Pre Christmas Day");
christmas.getProperties().add(new Organizer("TestOrganizer"));
// initialise as an all-day event..
UidGenerator ug = new UidGenerator("1");
christmas.getProperties().add(ug.generateUid());
calendar.getComponents().add(christmas);
return Response
.ok(calendar.toString())
.build();
} catch (SocketException ex) {
Logger.getLogger(CalendarRest.class.getName()).log(Level.SEVERE, null, ex);
} catch (URISyntaxException ex) {
Logger.getLogger(CalendarRest.class.getName()).log(Level.SEVERE, null, ex);
}
return Response.serverError().build();
}
}这是我第一次尝试,并立即解决了我的问题!它只是为了演示目的而不是完整的(参见捕获的异常)。
要让一切正常工作,你必须遵守RFC2446!
所使用的依赖项(maven):
<dependency>
<groupId>org.mnode.ical4j</groupId>
<artifactId>ical4j</artifactId>
<version>1.0.7</version>
</dependency>我希望我能帮助那些有同样问题的人。如果有任何问题,只要问一问,我会尽量尽快回答。
https://stackoverflow.com/questions/33075556
复制相似问题