私はJAVAで初心者です。サービスを作ろうとしています。JAX-RSとHibernateでテストしたい(JPA)ここでは、JAX-RSの情報を別のクラスに送信してオブジェクトUtilisateurを永続化することです.JAのデータベースに新しいオブジェクトを挿入するのと同じエラーが発生する前に、 。スレッド "main"の例外javax.ws.rs.NotAllowedException:HTTP 405メソッドが許可されていない@POSTスレッド "main"の例外javax.ws.rs.NotAllowedException:HTTP 405メソッドが許可されない
ここに私のクラスがあります(私のMAIN、私は私のMAINクラスをテストしています。オブジェクトの永続化を行うサービスクラス、永続化されるObjectクラスであるmy Utilisateurクラス、my web.xmlとmy persistence.xml)。私はつもりでも、コンソールにエラーコードをポストだ:(テストに)
私のメインクラス:
package clientREST;
import java.io.IOException;
import java.net.UnknownHostException;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriBuilder;
import modele.Utilisateur;
public class ClientMain {
public static void main(String[] args) throws UnknownHostException, IOException, Exception {
/* String nom = null ;
String prenom = null;
String pseudo = null;
String email = null;
String password = null;
String message = null;*/
String nom = "Vidal";
String prenom = "Fabrice";
String pseudo = "Doppio";
String email = "[email protected]";
String password = "vfd";
String message;
Client client = ClientBuilder.newClient();
WebTarget cible = client.target(UriBuilder.fromPath("http://172.17.0.5:8080/creationprofiltestmain/"));
WebTarget ciblefinale = cible.path("service");
System.out.println("ok");
Utilisateur util = ciblefinale.queryParam("nom", nom)
.queryParam("prenom", prenom)
.queryParam("pseudo",pseudo)
.queryParam("email", email)
.queryParam("password", password)
.request(MediaType.APPLICATION_XML).get(Utilisateur.class);
System.out.println("ok 2");
message = "Vous venez de créez votre profil Monsieur " +util.getNom()+ ".";
System.out.println(message + util.getNom()
+util.getPrenom()
+util.getPseudo()
+util.getEmail()
+util.getPassword());
}
}
私のサービスクラス:
package composants;
import javax.persistence.EntityManager;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import modele.Utilisateur;
import ressources.FournisseurDePersistance;
@Path("service")
public class ServiceCreationProfil {
private String nom;
private String prenom;
private String pseudo;
private String email;
private String password;
private String message;
EntityManager em = null;
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
//@Path("/getutil")
public Utilisateur getUtil (@QueryParam("nom") String nom,
@QueryParam("prenom") String prenom,
@QueryParam("pseudo") String pseudo,
@QueryParam("email") String email,
@QueryParam("password") String password){
Utilisateur util = new Utilisateur (nom, prenom, pseudo, email, password);
try {
em = FournisseurDePersistance.getInstance().fournir();
em.getTransaction().begin();
em.persist(util);
em.getTransaction().commit();
em.close();
}
catch (Exception e) {
em.getTransaction().rollback();
e.printStackTrace();
System.out.println(e);
message = "voila l'erreur :"+e;
}
// mettre un catch avec un try plus tard
return util;
}
//************************************** GETTERS ET SETTERS ET CONTRUSCTEUR ******************************************************
public ServiceCreationProfil() {
super();
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getPseudo() {
return pseudo;
}
public void setPseudo(String pseudo) {
this.pseudo = pseudo;
}
}
マイUtilisateurクラス(持続することになるもの):
package modele;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@Entity
@Table(name = "UTILISATEUR")
public class Utilisateur {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id_user;
@Column(nullable = false)
private String nom;
@Column(nullable = false)
private String prenom;
@Column(nullable = false, unique = true)
private String pseudo;
@Column(nullable = false, unique = true)
private String email;
@Column(nullable = false)
private String password;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private List<Annonce> annonces = new ArrayList<>();
public Utilisateur() {
super();
}
//***************************************** TEST ***********************************************
//***************************************** TEST ***********************************************
public Utilisateur(String nom, String prenom, String pseudo, String email, String password) {
super();
this.nom = nom;
this.prenom = prenom;
this.pseudo = pseudo;
this.email = email;
this.password = password;
}
public List<Annonce> getAnnonces() {
return annonces;
}
public void setAnnonces(List<Annonce> annonces) {
this.annonces = annonces;
}
public String getEmail() {
return email;
}
public int getId_user() {
return id_user;
}
public void setId_user(int id_user) {
this.id_user = id_user;
}
public String getPseudo() {
return pseudo;
}
public void setPseudo(String pseudo) {
this.pseudo = pseudo;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
}
私のpersistence.xml:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="peuplement" transaction-type="RESOURCE_LOCAL">
<class>modele.Utilisateur</class>
<class>modele.Annonce</class>
<class>modele.Type_annonce</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
<property name="javax.persistence.jdbc.user" value="derby"/>
<property name="javax.persistence.jdbc.password" value="derby"/>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://172.17.0.2:1530/ppeDB;update=true"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.DerbyTenSixDialect"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
私のweb.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Service REST creation profil</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>composants</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<persistence-context-ref>
<persistence-context-ref-name>peuplement</persistence-context-ref-name>
<persistence-unit-name>peuplement</persistence-unit-name>
<persistence-context-type>Transaction</persistence-context-type>
</persistence-context-ref>
</web-app>
エラーコード:
ok
Exception in thread "main" javax.ws.rs.NotAllowedException: HTTP 405 Method Not Allowed
at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:1023)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:819)
at org.glassfish.jersey.client.JerseyInvocation.access$700(JerseyInvocation.java:92)
at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:444)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:697)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:420)
at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:316)
at clientREST.ClientMain.main(ClientMain.java:43)
私は多くのことを逃した場合、私は申し訳ありませんが、そのフォーラムでは新しいです物事の、本当に残念。 このテストの後、SERVICEとGUIをJSF(xhtml)で接続するためのGUIを作成します。 私は英語ではないことがわかりましたが、そのような間違いには申し訳ありません。
あなたの 'persistence.xml'と' web.xml'は同じです。意味がありません –
私は間違いを犯しました、私は今すぐ変更しよう! – kenb