Problem:
When submiting the page, sometime it fails because of the validation. At this time, the data in the page are lost, and we have to type everything again.
Solution:
Declare the varaible at the beginning, and assign the value from the request. But if it's first fime calling the page, assign it as empty string.
<%
String xmlStr=request.getParameter("xmlStr");if(xmlStr==null)xmlStr="";
%>
<form method=GET >
<tr>
<td><textarea name="xmlStr" rows="12" cols="100"><%=xmlStr%></textarea></td>
</tr>
<tr><td><input type=submit name=submit value='Post'/></td></tr>
</table>
</form>
<%
if(request.getParameter("submit") != null){
if(xmlStr == null || xmlStr.equals("")) {
out.println("<p>xmlStr empty!</p>");
return;
}
// do whatever
}
%>
Larry's Road to J2EE
Total Pageviews
Wednesday 4 April 2012
how to handle binary data such as image in soap based web service
Web Service Part:
supposed that you have a picture named Desert.jpg in package resources
@WebService(serviceName = "PictureService")
@Stateless()
public class PictureService {
@WebMethod(operationName = "getImage")
public byte[] getImage( ) throws IOException {
URL resource = this.getClass().getResource("/resources/Desert.jpg");
InputStream in = resource.openStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for(int read; (read = in.read(buf)) != -1;) {
bos.write(buf, 0, read);
}
return bos.toByteArray()s;
}
}
Client part as Servlet:
public class test extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
PictureService_Service service = new PictureService_Service();
PictureService port=service.getPictureServicePort();
response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
byte[] content = port.getImage();
out.write(content);
out.close();
} catch (IOException_Exception ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
supposed that you have a picture named Desert.jpg in package resources
@WebService(serviceName = "PictureService")
@Stateless()
public class PictureService {
@WebMethod(operationName = "getImage")
public byte[] getImage( ) throws IOException {
URL resource = this.getClass().getResource("/resources/Desert.jpg");
InputStream in = resource.openStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for(int read; (read = in.read(buf)) != -1;) {
bos.write(buf, 0, read);
}
return bos.toByteArray()s;
}
}
Client part as Servlet:
public class test extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
PictureService_Service service = new PictureService_Service();
PictureService port=service.getPictureServicePort();
response.setContentType("image/jpeg");
OutputStream out = response.getOutputStream();
byte[] content = port.getImage();
out.write(content);
out.close();
} catch (IOException_Exception ex) {
Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
Sunday 1 April 2012
Unmarshalling from XML file and marshalling to XML file
ObjectFactory of = new ObjectFactory();
FlightInfo sh = of.createFlightInfo();
//Unmarshalling
JAXBContext ctx = JAXBContext.newInstance(sh.getClass().getPackage().getName());
Unmarshaller unm = ctx.createUnmarshaller();
sh= (FlightInfo)unm.unmarshal(new File("flight.xml"));
//do something with object sh
//Marshalling
try {
javax.xml.bind.Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(sh, new FileOutputStream(new File("flight.xml")));
} catch (javax.xml.bind.JAXBException ex) {
// Handle exception
java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex);
}
FlightInfo sh = of.createFlightInfo();
//Unmarshalling
JAXBContext ctx = JAXBContext.newInstance(sh.getClass().getPackage().getName());
Unmarshaller unm = ctx.createUnmarshaller();
sh= (FlightInfo)unm.unmarshal(new File("flight.xml"));
//do something with object sh
//Marshalling
try {
javax.xml.bind.Marshaller marshaller = ctx.createMarshaller();
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8");
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(sh, new FileOutputStream(new File("flight.xml")));
} catch (javax.xml.bind.JAXBException ex) {
// Handle exception
java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex);
}
How to convert String to XMLGregorianCalendar
String mydatetime="2011-09-29T08:55:00";
XMLGregorianCalendar xgc=DatatypeFactory.newInstance().newXMLGregorianCalendar(mydatetime);
XMLGregorianCalendar xgc=DatatypeFactory.newInstance().newXMLGregorianCalendar(mydatetime);
Monday 26 March 2012
How to cast a list in inheritance
For Example:
public class Person {};
public class Student extends Person{};
List<Person> persons=new ArrayList();
List<Student> students=new ArrayList();
persons=students;
how can you assign students to persons? the last line will throw an error.
public class Person {};
public class Student extends Person{};
List<Person> persons=new ArrayList();
List<Student> students=new ArrayList();
persons=students;
how can you assign students to persons? the last line will throw an error.
Wednesday 21 March 2012
Example of Inheritance in EJB
table structure
create table "APP".PERSON
(
ID INTEGER not null primary key,
NAME VARCHAR(256),
ADDRESS VARCHAR(256),
PHONE VARCHAR(256),
EMAIL VARCHAR(256),
TYPE VARCHAR(256)
)
person.java
import javax.persistence.*;
@Entity
@Table(name = "PERSON")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.STRING,length=1)
public class Person implements java.io.Serializable {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "ADDRESS")
private String address;
@Column(name = "PHONE")
private String phone;
@Column(name = "EMAIL")
private String email;
@Column(name = "TYPE")
private String type;
public Person() {
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getType() { return type; }
public void setType(String type) { this.type = type; }
}
student.java
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue(value="S")
public class Student extends Person {
public Student() {
}
}
employee.java
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;@Entity
@DiscriminatorValue(value="E")
public class Employee extends Person{
public Employee() {
}
}
create table "APP".PERSON
(
ID INTEGER not null primary key,
NAME VARCHAR(256),
ADDRESS VARCHAR(256),
PHONE VARCHAR(256),
EMAIL VARCHAR(256),
TYPE VARCHAR(256)
)
person.java
import javax.persistence.*;
@Entity
@Table(name = "PERSON")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.STRING,length=1)
public class Person implements java.io.Serializable {
@Id
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
@Column(name = "ADDRESS")
private String address;
@Column(name = "PHONE")
private String phone;
@Column(name = "EMAIL")
private String email;
@Column(name = "TYPE")
private String type;
public Person() {
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getType() { return type; }
public void setType(String type) { this.type = type; }
}
student.java
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue(value="S")
public class Student extends Person {
public Student() {
}
}
employee.java
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;@Entity
@DiscriminatorValue(value="E")
public class Employee extends Person{
public Employee() {
}
}
Tuesday 20 March 2012
How to get max value for identity column in EJB-QL
For example,
I have a table Bookorder with an Identity column
I can execute the following:
Query query1 = em.createQuery("SELECT MAX(b.id) FROM Bookorder b");
int bo_max=(Integer)query1.getSingleResult();
Please notice that it's Integer and not int when casting the result of query.
I have a table Bookorder with an Identity column
Id
.I can execute the following:
Query query1 = em.createQuery("SELECT MAX(b.id) FROM Bookorder b");
int bo_max=(Integer)query1.getSingleResult();
Please notice that it's Integer and not int when casting the result of query.
Subscribe to:
Posts (Atom)