Ошибка: неверный тип для структуры JAX-RPC: jspf.common.ForumPost
Я должен сделать веб-сервис, используя JAX-RPC для проекта, и я получаю error: invalid type for JAX-RPC structure: jspf.common.ForumPost
при попытке его скомпилировать. Мы должны использовать JDK 5 и J2EE 1.4. Я использую Netbeans 7.0 с плагином JAX-RPC и плагином поддержки Glassfish v1, чтобы использовать Application Server PE 9 в качестве моего контейнера.
Это мой класс:
package jspf.common;
import java.sql.Date;
public class ForumPost extends java.lang.Object implements java.io.Serializable {
private String poster;
private String content;
private int topic_id;
private int post_id;
private Date time;
/**
* Creates a new ForumPost object.
* @param poster The username of the user that posted the post.
* @param content The body/content of the post.
* @param topic_id The topic ID that this post replies to.
* @param post_id This post's ID.
*/
public ForumPost() {
}
public ForumPost(int post_id, int topic_id, String poster, String content, Date time) {
this.poster = poster;
this.content = content;
this.topic_id = topic_id;
this.post_id = post_id;
this.time = time;
}
public Date getTime() {
return time;
}
public String getContent() {
return content;
}
public int getPost_id() {
return post_id;
}
public String getPoster() {
return poster;
}
public int getTopic_id() {
return topic_id;
}
}
Да, я должен использовать эту старую технологию, к сожалению.
У меня были подобные проблемы с другим классом, но это, казалось, было исправлено удалением ArrayList
это было внутри, но мне это действительно нужно ArrayList
,
Почему я получаю эту ошибку?
РЕДАКТИРОВАТЬ: я избавился от всех ссылок на java.sql.Date, следующим образом:
package jspf.common;
public class ForumPost extends java.lang.Object implements java.io.Serializable {
private String poster;
private String content;
private int topic_id;
private int post_id;
private long time;
/**
* Creates a new ForumPost object.
* @param poster The username of the user that posted the post.
* @param content The body/content of the post.
* @param topic_id The topic ID that this post replies to.
* @param post_id This post's ID.
*/
public ForumPost() {
}
public ForumPost(int post_id, int topic_id, String poster, String content, long time) {
this.poster = poster;
this.content = content;
this.topic_id = topic_id;
this.post_id = post_id;
this.time = time;
}
public long getTime() {
return time;
}
public String getContent() {
return content;
}
public int getPost_id() {
return post_id;
}
public String getPoster() {
return poster;
}
public int getTopic_id() {
return topic_id;
}
}
И я все еще получаю ту же ошибку. Я не понимаю, в чем проблема.
1 ответ
Я нашел проблему. Типы значений, определенные в документации J2EE 1.4, должны содержать методы getter и setter, мой класс содержал только методы getter.
Типы значений
Тип значения - это класс, состояние которого может передаваться между клиентом и удаленной службой в качестве параметра метода или возвращаемого значения. Например, в приложении для университетской библиотеки клиент может вызвать удаленную процедуру с параметром типа значения с именем Book, классом, содержащим поля Title, Author и Publisher.
Для поддержки JAX-RPC тип значения должен соответствовать следующим правилам:
- Он должен иметь открытый конструктор по умолчанию.
- Он не должен реализовывать (прямо или косвенно) интерфейс java.rmi.Remote.
- Его поля должны поддерживать типы JAX-RPC.
Тип значения может содержать открытые, закрытые или защищенные поля. Поле типа значения должно соответствовать следующим требованиям:
- Публичное поле не может быть окончательным или временным.
- Непубличное поле должно иметь соответствующие методы получения и установки.
Источник: http://docs.oracle.com/javaee/1.4/tutorial/doc/JAXRPC4.html